summaryrefslogtreecommitdiffstats
path: root/src/sound
diff options
context:
space:
mode:
authorerihel <erihel@gmail.com>2013-02-24 18:04:38 +0100
committererihel <erihel@gmail.com>2013-02-24 18:04:38 +0100
commit3a594dc3a814cff4ae4db02985f4b1ce643a0604 (patch)
tree2162a2be423fc6397beb3a82d595079220e10fe4 /src/sound
parentba2df2cb4201597c9dc01365641413dcbf6812d9 (diff)
downloadcolobot-3a594dc3a814cff4ae4db02985f4b1ce643a0604.tar.gz
colobot-3a594dc3a814cff4ae4db02985f4b1ce643a0604.tar.bz2
colobot-3a594dc3a814cff4ae4db02985f4b1ce643a0604.zip
* Changed AdjustFrequency formula
* Changed SetVolume to match orginal game formula
Diffstat (limited to 'src/sound')
-rw-r--r--src/sound/oalsound/alsound.cpp7
-rw-r--r--src/sound/oalsound/channel.cpp4
2 files changed, 7 insertions, 4 deletions
diff --git a/src/sound/oalsound/alsound.cpp b/src/sound/oalsound/alsound.cpp
index 83cbeb6..17a46fe 100644
--- a/src/sound/oalsound/alsound.cpp
+++ b/src/sound/oalsound/alsound.cpp
@@ -386,7 +386,8 @@ bool ALSound::Frequency(int channel, float frequency)
return false;
}
- mChannels[channel]->SetFrequency(frequency);
+ mChannels[channel]->SetFrequency(frequency * mChannels[channel]->GetInitFrequency());
+ mChannels[channel]->SetChangeFrequency(frequency);
return true;
}
@@ -461,11 +462,13 @@ void ALSound::FrameMove(float delta)
// setting volume
volume = progress * (oper.finalAmplitude - it.second->GetStartAmplitude());
- it.second->SetVolume((volume + it.second->GetStartAmplitude()) * mAudioVolume);
+ volume = (volume + it.second->GetStartAmplitude()) * mAudioVolume;
+ it.second->SetVolume(volume);
// setting frequency
frequency = progress * (oper.finalFrequency - it.second->GetStartFrequency()) * it.second->GetStartFrequency() * it.second->GetChangeFrequency() * it.second->GetInitFrequency();
it.second->AdjustFrequency(frequency);
+ GetLogger()->Error("%f\n", frequency);
if (oper.totalTime <= oper.currentTime) {
if (oper.nextOper == SOPER_LOOP) {
diff --git a/src/sound/oalsound/channel.cpp b/src/sound/oalsound/channel.cpp
index 3c8bc50..0faecd0 100644
--- a/src/sound/oalsound/channel.cpp
+++ b/src/sound/oalsound/channel.cpp
@@ -94,7 +94,7 @@ bool Channel::AdjustFrequency(float freq)
if (!mReady || mBuffer == nullptr)
return false;
- return SetFrequency(mInitFrequency - freq);
+ return SetFrequency(mInitFrequency + freq);
}
@@ -119,7 +119,7 @@ bool Channel::SetVolume(float vol)
if (!mReady || vol < 0 || mBuffer == nullptr)
return false;
- alSourcef(mSource, AL_GAIN, MIN(vol, 1.0f));
+ alSourcef(mSource, AL_GAIN, MIN(powf(vol, 0.2f), 1.0f));
if (alCheck()) {
GetLogger()->Warn("Could not set sound volume to '%f'. Code: %d\n", vol, alGetCode());
return false;