|
|
- /*******************************************************************************************
- *
- * 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 <stdio.h>
- #include "audio.h"
- #if defined(_WIN32)
- #include <conio.h> // Windows only, no stardard library
-
- #else
- #include <stdio.h>
- #include <termios.h>
- #include <unistd.h>
- #include <fcntl.h>
-
- 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
- //--------------------------------------------------------------------------------------
- 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;
- }
|