| 
								
							 | 
							
								/**********************************************************************************************
							 | 
						
						
						
							| 
								
							 | 
							
								*
							 | 
						
						
						
							| 
								
							 | 
							
								*   raylib.audio
							 | 
						
						
						
							| 
								
							 | 
							
								*
							 | 
						
						
						
							| 
								
							 | 
							
								*   Basic functions to manage Audio: InitAudioDevice, LoadAudioFiles, PlayAudioFiles
							 | 
						
						
						
							| 
								
							 | 
							
								*
							 | 
						
						
						
							| 
								
							 | 
							
								*   Uses external lib:
							 | 
						
						
						
							| 
								
							 | 
							
								*       OpenAL Soft - Audio device management lib (http://kcat.strangesoft.net/openal.html)
							 | 
						
						
						
							| 
								
							 | 
							
								*       stb_vorbis - Ogg audio files loading (http://www.nothings.org/stb_vorbis/)
							 | 
						
						
						
							| 
								
							 | 
							
								*
							 | 
						
						
						
							| 
								
							 | 
							
								*   Copyright (c) 2015 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.
							 | 
						
						
						
							| 
								
							 | 
							
								*
							 | 
						
						
						
							| 
								
							 | 
							
								**********************************************************************************************/
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								#ifndef AUDIO_H
							 | 
						
						
						
							| 
								
							 | 
							
								#define AUDIO_H
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								//----------------------------------------------------------------------------------
							 | 
						
						
						
							| 
								
							 | 
							
								// Defines and Macros
							 | 
						
						
						
							| 
								
							 | 
							
								//----------------------------------------------------------------------------------
							 | 
						
						
						
							| 
								
							 | 
							
								//...
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								//----------------------------------------------------------------------------------
							 | 
						
						
						
							| 
								
							 | 
							
								// Types and Structures Definition
							 | 
						
						
						
							| 
								
							 | 
							
								// NOTE: Below types are required for CAMERA_STANDALONE usage
							 | 
						
						
						
							| 
								
							 | 
							
								//----------------------------------------------------------------------------------
							 | 
						
						
						
							| 
								
							 | 
							
								#ifndef __cplusplus
							 | 
						
						
						
							| 
								
							 | 
							
								// Boolean type
							 | 
						
						
						
							| 
								
							 | 
							
								typedef enum { false, true } bool;
							 | 
						
						
						
							| 
								
							 | 
							
								#endif
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								// Sound source type
							 | 
						
						
						
							| 
								
							 | 
							
								typedef struct Sound {
							 | 
						
						
						
							| 
								
							 | 
							
								    unsigned int source;
							 | 
						
						
						
							| 
								
							 | 
							
								    unsigned int buffer;
							 | 
						
						
						
							| 
								
							 | 
							
								} 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;
							 | 
						
						
						
							| 
								
							 | 
							
								    short channels;
							 | 
						
						
						
							| 
								
							 | 
							
								} Wave;
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								#ifdef __cplusplus
							 | 
						
						
						
							| 
								
							 | 
							
								extern "C" {            // Prevents name mangling of functions
							 | 
						
						
						
							| 
								
							 | 
							
								#endif
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								//----------------------------------------------------------------------------------
							 | 
						
						
						
							| 
								
							 | 
							
								// Global Variables Definition
							 | 
						
						
						
							| 
								
							 | 
							
								//----------------------------------------------------------------------------------
							 | 
						
						
						
							| 
								
							 | 
							
								//...
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								//----------------------------------------------------------------------------------
							 | 
						
						
						
							| 
								
							 | 
							
								// Module Functions Declaration
							 | 
						
						
						
							| 
								
							 | 
							
								//----------------------------------------------------------------------------------
							 | 
						
						
						
							| 
								
							 | 
							
								void InitAudioDevice(void);                                     // Initialize audio device and context
							 | 
						
						
						
							| 
								
							 | 
							
								void CloseAudioDevice(void);                                    // Close the audio device and context (and music stream)
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								Sound LoadSound(char *fileName);                                // Load sound to memory
							 | 
						
						
						
							| 
								
							 | 
							
								Sound LoadSoundFromWave(Wave wave);                             // Load sound to memory from wave data
							 | 
						
						
						
							| 
								
							 | 
							
								Sound LoadSoundFromRES(const char *rresName, int resId);        // Load sound to memory from rRES file (raylib Resource)
							 | 
						
						
						
							| 
								
							 | 
							
								void UnloadSound(Sound sound);                                  // Unload sound
							 | 
						
						
						
							| 
								
							 | 
							
								void PlaySound(Sound sound);                                    // Play a sound
							 | 
						
						
						
							| 
								
							 | 
							
								void PauseSound(Sound sound);                                   // Pause a sound
							 | 
						
						
						
							| 
								
							 | 
							
								void StopSound(Sound sound);                                    // Stop playing a sound
							 | 
						
						
						
							| 
								
							 | 
							
								bool SoundIsPlaying(Sound sound);                               // Check if a sound is currently playing
							 | 
						
						
						
							| 
								
							 | 
							
								void SetSoundVolume(Sound sound, float volume);                 // Set volume for a sound (1.0 is max level)
							 | 
						
						
						
							| 
								
							 | 
							
								void SetSoundPitch(Sound sound, float pitch);                   // Set pitch for a sound (1.0 is base level)
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								void PlayMusicStream(char *fileName);                           // Start music playing (open stream)
							 | 
						
						
						
							| 
								
							 | 
							
								void UpdateMusicStream(void);                                   // Updates buffers for music streaming
							 | 
						
						
						
							| 
								
							 | 
							
								void StopMusicStream(void);                                     // Stop music playing (close stream)
							 | 
						
						
						
							| 
								
							 | 
							
								void PauseMusicStream(void);                                    // Pause music playing
							 | 
						
						
						
							| 
								
							 | 
							
								void ResumeMusicStream(void);                                   // Resume playing paused music
							 | 
						
						
						
							| 
								
							 | 
							
								bool MusicIsPlaying(void);                                      // Check if music is playing
							 | 
						
						
						
							| 
								
							 | 
							
								void SetMusicVolume(float volume);                              // Set volume for music (1.0 is max level)
							 | 
						
						
						
							| 
								
							 | 
							
								float GetMusicTimeLength(void);                                 // Get current music time length (in seconds)
							 | 
						
						
						
							| 
								
							 | 
							
								float GetMusicTimePlayed(void);                                 // Get current music time played (in seconds)
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								#ifdef __cplusplus
							 | 
						
						
						
							| 
								
							 | 
							
								}
							 | 
						
						
						
							| 
								
							 | 
							
								#endif
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								#endif // AUDIO_H
							 |