/******************************************************************************************* * * raylib [audio] example - Using audio module as standalone module * * NOTE: This example does not require any graphic device, it can run directly on console. * * [audio] module requires some external libs: * OpenAL Soft - Audio device management lib (http://kcat.strangesoft.net/openal.html) * stb_vorbis - Ogg audio files loading (http://www.nothings.org/stb_vorbis/) * jar_xm - XM module file loading * jar_mod - MOD audio file loading * dr_flac - FLAC audio file loading * * Compile audio module using: * gcc -c audio.c stb_vorbis.c -Wall -std=c99 -DAUDIO_STANDALONE -DAL_LIBTYPE_STATIC * * Compile example using: * gcc -o audio_standalone.exe audio_standalone.c audio.o stb_vorbis.o -lopenal32 -lwinmm / * -s -Wall -std=c99 -Wl,-allow-multiple-definition * * This example has been created using raylib 1.7 (www.raylib.com) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * * Copyright (c) 2017 Ramon Santamaria (@raysan5) * ********************************************************************************************/ #include #include "audio.h" #if defined(_WIN32) #include // Windows only, no stardard library #else #include #include #include #include static int kbhit(void) { struct termios oldt, newt; int ch; int oldf; tcgetattr(STDIN_FILENO, &oldt); newt = oldt; newt.c_lflag &= ~(ICANON | ECHO); tcsetattr(STDIN_FILENO, TCSANOW, &newt); oldf = fcntl(STDIN_FILENO, F_GETFL, 0); fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK); ch = getchar(); tcsetattr(STDIN_FILENO, TCSANOW, &oldt); fcntl(STDIN_FILENO, F_SETFL, oldf); if(ch != EOF) { ungetc(ch, stdin); return 1; } return 0; } static char getch() { return getchar(); } #endif #define KEY_ESCAPE 27 int main() { // Initialization //-------------------------------------------------------------------------------------- unsigned char key; InitAudioDevice(); Sound fxWav = LoadSound("resources/audio/weird.wav"); // Load WAV audio file Sound fxOgg = LoadSound("resources/audio/tanatana.ogg"); // Load OGG audio file Music music = LoadMusicStream("resources/audio/guitar_noodling.ogg"); PlayMusicStream(music); printf("\nPress s or d to play sounds...\n"); //-------------------------------------------------------------------------------------- // Main loop while (key != KEY_ESCAPE) { if (kbhit()) key = getch(); if (key == 's') { PlaySound(fxWav); key = 0; } if (key == 'd') { PlaySound(fxOgg); key = 0; } UpdateMusicStream(music); } // De-Initialization //-------------------------------------------------------------------------------------- UnloadSound(fxWav); // Unload sound data UnloadSound(fxOgg); // Unload sound data UnloadMusicStream(music); // Unload music stream data CloseAudioDevice(); //-------------------------------------------------------------------------------------- return 0; }