/* audio/audio.cc This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #include "audio/audio.h" #include "audio/buffers.h" #include "audio/pcm.h" #include "sys/sys.h" namespace audio { ALCdevice *audio_device = 0; ALCcontext *audio_context = 0; ALuint source = 0; void init() { con_print << "^BInitializing audio..."; // open the default audio device audio_device = alcOpenDevice(0); if (!audio_device) { con_warn << "Could not initialize audio!"; return; } // create the audio context audio_context = alcCreateContext(audio_device ,0); alcMakeContextCurrent(audio_context); // clear errors alGetError(); Buffers::init(); //con_debug << " device ^B" << alcGetString(audio_device, ALC_DEFAULT_DEVICE_SPECIFIER) << std::endl; load("ui/chat"); // default sound source alGenSources(1, &source); } void load (const char *name) { Buffers::load(std::string(name)); } void shutdown() { con_print << "^BShutting down audio..."; if (audio_context) { alcMakeContextCurrent(0); alcDestroyContext(audio_context); audio_context = 0; } if (audio_device) { alcCloseDevice(audio_device); audio_device = 0; } alDeleteSources(1, &source); } void play(const char *name) { Buffers::bind(source, std::string(name)); alSourcePlay(source); } }