/* audio/audio.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_AUDIO_AUDIO_H__ #define __INCLUDED_AUDIO_AUDIO_H__ #include #include "sys/sys.h" #ifdef _WIN32 #include #include #endif #ifdef _OSX #include "OpenAL/al.h" #include "OpenAL/alc.h" #else #include "AL/al.h" #include "AL/alc.h" #endif #include "math/vector3f.h" #include "math/axis.h" /// functions to handle audio namespace audio { /// initialize the audio subsystem void init(); /// shut down the audio subsystem void shutdown(); /// reload audio void reset(); /// load an audio sample void load(const char *name); /// play a previously loaded audio sample on the ui channel size_t play(const char *name); /// playe a sound from a specific buffer on a specific source size_t play(size_t source_index, size_t buffer_index, float pitch = 1.0f, float gain = 1.0f); /// play a looping sound on a specified source size_t loop(size_t source_index, const char *name, float pitch = 1.0f, float gain = 1.0f); /// play a looping sound from a specified buffer on a specified source size_t loop(size_t source_index, size_t buffer_index, float pitch, float gain); /// stop playback of a specific source size_t stop(size_t source_index); /// update source parameters void update_source(size_t source_index, math::Vector3f const & location, math::Vector3f const & velocity, float pitch = 1.0f, float gain = 1.0f); /// update listener parameters void update_listener(math::Vector3f const &location, math::Axis const &axis, math::Vector3f const & velocity, float gain = 1.0f); /// return true is a source is playing bool is_playing(const size_t source_index); /// return true if audio is initialized bool initialized(); } #endif // __INCLUDED_AUDIO_AUDIO_H__