Fading zwischen Audiochannels
-
Hallo!
Irgendwie steht ich im moment "auf der Leitung": ich möchte zwischen zwei Audiokanälen faden.
Am Anfang bekommt der 1. channel einen sound zugewiesen. wird ein 2. sound hinzugefügt, so soll channel 1 ausfaden, und channel 2 einfaden. Kommt noch ein weiterer sound hinzu, so soll channel 2 ausfaden und channel 1 einfaden (usw.).
Ich habe dafür schon einen Code produziert, aber irgendwas passt da nicht. Hier mal der Ablauf (der Code ist nicht schön, aber mir geht es vorübergehend nur mal um die funktionalität):// Membervariablen 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; } } // Laden der entsprechenden 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
Es wäre super, wenn mir jemand ein paar tipps geben könnte ;).
danke,