Hello!
I want to fade between two audio channels. First, a sound is applied to the first channel. Then, when a second sound is attached, the first channel should fade out, and the other fade in. Then, it might be, that another sound is added. In this case channel 2 should fade out, and channel 1 should fade in (and so on).
Here is a code snipped that I produced:
Code:
// Membervariables
FMOD::Channel * m_pSoundChannel, *m_pSoundChannel2;
FMOD::Sound* m_CurSound;
float m_SoundOrgFrequ;
float m_SoundCurSampleSpeed;
int m_fadeInOut[2];
bool m_fadeInFirstChannel;
std::vector<FMOD::Sound*> m_sounds;
while (...)
{
//...
// fade
if (m_fadeInFirstChannel && m_fadeInOut[0] < 256)
{
// fade in channel 1
m_fadeInOut[0]++;
if (m_fadeInOut[1] > 0) m_fadeInOut[1]--;
else if (m_pSoundChannel2)
{
CSoundManager::ERRCHECK(m_pSoundChannel2->stop());
m_pSoundChannel2 = 0;
}
}
else if (m_fadeInOut[1] < 256 && !m_fadeInFirstChannel)
{
m_fadeInOut[1]++;
if (m_fadeInOut[0] > 0) m_fadeInOut[0]--;
else if (m_pSoundChannel)
{
CSoundManager::ERRCHECK(m_pSoundChannel->stop());
m_pSoundChannel = 0;
}
}
// Loading of soundfiles
if (m_the_car.rpm < 2000 && m_CurSound != m_sounds[0])
{
CSoundManager::PlaySound(m_sounds[0],false,m_fadeInFirstChannel ? &m_pSoundChannel : &m_pSoundChannel2);
CSoundManager::ERRCHECK((m_fadeInFirstChannel ? m_pSoundChannel : m_pSoundChannel2)->getFrequency(&m_SoundOrgFrequ));
m_fadeInFirstChannel = !m_fadeInFirstChannel;
m_CurSound = m_sounds[0];
}
else if (m_the_car.rpm >= 2000 && m_the_car.rpm < 3000 && m_CurSound != m_sounds[1])
{
CSoundManager::PlaySound(m_sounds[1],false,m_fadeInFirstChannel ? &m_pSoundChannel : &m_pSoundChannel2);
CSoundManager::ERRCHECK((m_fadeInFirstChannel ? m_pSoundChannel : m_pSoundChannel2)->getFrequency(&m_SoundOrgFrequ));
m_fadeInFirstChannel = !m_fadeInFirstChannel;
m_CurSound = m_sounds[1];
}
if (m_pSoundChannel)
{
m_pSoundChannel->setVolume(m_fadeInOut[0]);
}
if (m_pSoundChannel2)
{
m_pSoundChannel2->setVolume(m_fadeInOut[1]);
}
} // while
Somewhere is an error, but I don't get it. Can someone please help me?
thank you,