mirror of
				https://github.com/raysan5/raylib.git
				synced 2025-10-26 12:27:01 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			124 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*******************************************************************************************
 | |
| *
 | |
| *   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 -Wall -std=c99 -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 <stdio.h>
 | |
| #if defined(_WIN32)
 | |
| #include <conio.h>      // Windows only, no stardard library
 | |
| #endif
 | |
| #include "audio.h"
 | |
| 
 | |
| #if defined(__linux__)
 | |
| 
 | |
| #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
 | |
|     //--------------------------------------------------------------------------------------
 | |
|     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;
 | |
| }
 | 
