sound loops are now hard coded to channel 4
parent
0236bed14b
commit
b08a835bfb
|
@ -34,7 +34,7 @@ void SoundSample::Play() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundSample::Loop(int count) {
|
void SoundSample::Loop(int count) {
|
||||||
mChannel = Mix_PlayChannel(-1, mMixChunk, count);
|
mChannel = Mix_PlayChannel(4, mMixChunk, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundSample::Stop() {
|
void SoundSample::Stop() {
|
||||||
|
@ -48,13 +48,16 @@ int SoundBase::OnInit(int argc, char* argv[]) {
|
||||||
int audio_rate = 22050;
|
int audio_rate = 22050;
|
||||||
Uint16 audio_format = AUDIO_S16;
|
Uint16 audio_format = AUDIO_S16;
|
||||||
int audio_channels = 2;
|
int audio_channels = 2;
|
||||||
int audio_buffers = 4096;
|
int audio_buffers = 512;
|
||||||
|
|
||||||
LogDebug("Sound Init");
|
LogDebug("Sound Init");
|
||||||
if (Mix_OpenAudio (audio_rate, audio_format, audio_channels, audio_buffers)) {
|
if (Mix_OpenAudio (audio_rate, audio_format, audio_channels, audio_buffers)) {
|
||||||
LogError ("Unable to initialize the sound system! Error message: %s", SDL_GetError());
|
LogError ("Unable to initialize the sound system! Error message: %s", SDL_GetError());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Allocate a few channels
|
||||||
|
Mix_AllocateChannels(8);
|
||||||
|
|
||||||
Mix_QuerySpec (&audio_rate, &audio_format, &audio_channels);
|
Mix_QuerySpec (&audio_rate, &audio_format, &audio_channels);
|
||||||
LogDebug("Sound: rate: %d channels: %d format: %d", audio_rate, audio_channels, audio_format);
|
LogDebug("Sound: rate: %d channels: %d format: %d", audio_rate, audio_channels, audio_format);
|
||||||
|
|
||||||
|
@ -97,7 +100,7 @@ void SoundBase::PlaySound (const std::string &sound_name) {
|
||||||
iter = mSamples.find(sound_name);
|
iter = mSamples.find(sound_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
LogDebug ("Playing sound %s", sound_name.c_str());
|
LogDebug ("Playing sound %s at channel %d", sound_name.c_str(), iter->second->GetChannel());
|
||||||
|
|
||||||
iter->second->Play();
|
iter->second->Play();
|
||||||
}
|
}
|
||||||
|
@ -118,7 +121,7 @@ void SoundBase::PlaySoundLoop (const std::string &sound_name, int count) {
|
||||||
iter = mSamples.find(sound_name);
|
iter = mSamples.find(sound_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
LogDebug ("Playing sound loop %s", sound_name.c_str());
|
LogDebug ("Playing sound loop %s at channel %d", sound_name.c_str(), iter->second->GetChannel());
|
||||||
|
|
||||||
iter->second->Loop(count);
|
iter->second->Loop(count);
|
||||||
}
|
}
|
||||||
|
@ -136,7 +139,7 @@ void SoundBase::HaltSoundLoop (const std::string &sound_name) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LogDebug ("Halting sound loop %s", sound_name.c_str());
|
LogDebug ("Halting sound loop %s at channel %d", sound_name.c_str(), iter->second->GetChannel());
|
||||||
|
|
||||||
iter->second->Stop();
|
iter->second->Stop();
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ class SoundSample {
|
||||||
void Play();
|
void Play();
|
||||||
void Loop(int count);
|
void Loop(int count);
|
||||||
void Stop();
|
void Stop();
|
||||||
|
int GetChannel () { return mChannel; };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int mChannel;
|
int mChannel;
|
||||||
|
@ -34,6 +35,11 @@ typedef boost::shared_ptr<SoundSample> SoundSamplePtr;
|
||||||
class SoundBase : public Module {
|
class SoundBase : public Module {
|
||||||
public:
|
public:
|
||||||
void PlaySound (const std::string &sound_name);
|
void PlaySound (const std::string &sound_name);
|
||||||
|
/** \brief Plays a sound chunk in a loop
|
||||||
|
*
|
||||||
|
* \note Loops are hard-coded played in channel 4, therefore playing
|
||||||
|
* two loops simultaneously is currently not supported.
|
||||||
|
*/
|
||||||
void PlaySoundLoop (const std::string &sound_name, int count);
|
void PlaySoundLoop (const std::string &sound_name, int count);
|
||||||
void HaltSoundLoop (const std::string &sound_name);
|
void HaltSoundLoop (const std::string &sound_name);
|
||||||
void LoadSound (const std::string &sound_name);
|
void LoadSound (const std::string &sound_name);
|
||||||
|
|
|
@ -4,6 +4,11 @@
|
||||||
namespace Engine {
|
namespace Engine {
|
||||||
|
|
||||||
void PlaySound (const std::string &sound_name);
|
void PlaySound (const std::string &sound_name);
|
||||||
|
/** \brief Plays a sound chunk in a loop
|
||||||
|
*
|
||||||
|
* \note Loops are hard-coded played in channel 4, therefore playing
|
||||||
|
* two loops simultaneously is currently not supported.
|
||||||
|
*/
|
||||||
void PlaySoundLoop (const std::string &sound_name, int count);
|
void PlaySoundLoop (const std::string &sound_name, int count);
|
||||||
void HaltSoundLoop (const std::string &sound_name);
|
void HaltSoundLoop (const std::string &sound_name);
|
||||||
void PlayMusic (const std::string &music_name);
|
void PlayMusic (const std::string &music_name);
|
||||||
|
|
Loading…
Reference in New Issue