From a05150392a14ded407ffbf8c735dd4f92354fcb8 Mon Sep 17 00:00:00 2001 From: raysan5 Date: Sat, 16 Jul 2016 19:24:08 +0200 Subject: [PATCH] Added audio standalone sample --- examples/audio_standalone.c | 74 +++++++++++++++++++++++++++++++++++++ src/audio.h | 9 ++--- 2 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 examples/audio_standalone.c diff --git a/examples/audio_standalone.c b/examples/audio_standalone.c new file mode 100644 index 00000000..1ae6324a --- /dev/null +++ b/examples/audio_standalone.c @@ -0,0 +1,74 @@ +/******************************************************************************************* +* +* 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 +* +* Compile audio module using: +* gcc -c audio.c stb_vorbis.c -DAUDIO_STANDALONE +* +* Compile example using: +* gcc -o $(NAME_PART).exe $(FILE_NAME) audio.o stb_vorbis.o -lopenal32 -std=c99 +* +* This example has been created using raylib 1.5 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Copyright (c) 2015 Ramon Santamaria (@raysan5) +* +********************************************************************************************/ + +#include +#include // Windows only, no stardard library + +#include "audio.h" + +#define KEY_ESCAPE 27 + +int main() +{ + 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 + + PlayMusicStream(0, "resources/audio/guitar_noodling.ogg"); + + printf("\nPress s or d to play sounds...\n"); + + while (key != KEY_ESCAPE) + { + if (kbhit()) key = getch(); + + if (key == 's') + { + PlaySound(fxWav); + key = 0; + } + + if (key == 'd') + { + PlaySound(fxOgg); + key = 0; + } + + UpdateMusicStream(0); + } + + UnloadSound(fxWav); // Unload sound data + UnloadSound(fxOgg); // Unload sound data + + CloseAudioDevice(); + + printf("\n\nPress ENTER to close..."); + getchar(); + + return 0; +} \ No newline at end of file diff --git a/src/audio.h b/src/audio.h index f4a82a55..b6850911 100644 --- a/src/audio.h +++ b/src/audio.h @@ -62,17 +62,16 @@ // Sound source type typedef struct Sound { - unsigned int source; - unsigned int buffer; - AudioError error; // if there was any error during the creation or use of this Sound + unsigned int source; // Sound audio source id + unsigned int buffer; // Sound audio buffer id } Sound; // Wave type, defines audio wave data typedef struct Wave { void *data; // Buffer data pointer unsigned int dataSize; // Data size in bytes - unsigned int sampleRate; - short bitsPerSample; + unsigned int sampleRate; // Samples per second to be played + short bitsPerSample; // Sample size in bits short channels; } Wave;