diff options
Diffstat (limited to 'examples/others/raudio_standalone.c')
| -rw-r--r-- | examples/others/raudio_standalone.c | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/examples/others/raudio_standalone.c b/examples/others/raudio_standalone.c new file mode 100644 index 00000000..930bde85 --- /dev/null +++ b/examples/others/raudio_standalone.c @@ -0,0 +1,141 @@ +/******************************************************************************************* +* +* raylib [audio] example - Using raudio module as standalone module +* +* NOTE: This example does not require any graphic device, it can run directly on console. +* +* DEPENDENCIES: +* mini_al.h - Audio device management lib (http://kcat.strangesoft.net/openal.html) +* stb_vorbis.h - Ogg audio files loading (http://www.nothings.org/stb_vorbis/) +* jar_xm.h - XM module file loading +* jar_mod.h - MOD audio file loading +* dr_flac.h - FLAC audio file loading +* +* COMPILATION: +* gcc -c ..\..\src\external\mini_al.c -Wall -I. +* gcc -o audio_standalone.exe audio_standalone.c ..\..\src\raudio.c mini_al.o / +* -I..\..\src -I..\..\src\external -L. -Wall -std=c99 / +* -DAUDIO_STANDALONE -DSUPPORT_FILEFORMAT_WAV -DSUPPORT_FILEFORMAT_OGG +* +* LICENSE: zlib/libpng +* +* This example is licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software: +* +* Copyright (c) 2014-2019 Ramon Santamaria (@raysan5) +* +* This software is provided "as-is", without any express or implied warranty. In no event +* will the authors be held liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, including commercial +* applications, and to alter it and redistribute it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not claim that you +* wrote the original software. If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but is not required. +* +* 2. Altered source versions must be plainly marked as such, and must not be misrepresented +* as being the original software. +* +* 3. This notice may not be removed or altered from any source distribution. +* +********************************************************************************************/ + +#include "raudio.h" // raylib audio library + +#include <stdio.h> // Required for: printf() + +#if defined(_WIN32) + #include <conio.h> // Windows only, no stardard library +#else + +// Provide kbhit() function in non-Windows platforms +#include <stdio.h> +#include <termios.h> +#include <unistd.h> +#include <fcntl.h> + +// Check if a key has been pressed +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; +} + +// Get pressed character +static char getch() { return getchar(); } + +#endif + +#define KEY_ESCAPE 27 + +int main() +{ + // Initialization + //-------------------------------------------------------------------------------------- + static 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; +} |
