2012-04-08 25 views
2

我遇到了问题与fmod shit ptich。我可以使用channel :: setfrequency来做,但我需要在更大的sfx上使用它,因此需要DSP的准确性[无节奏变化]。不过,我似乎无法应用过滤器。FMODex音调转换问题与DSP

FMOD::DSP* dsp; 
result = m_soundSystem->createDSPByType(FMOD_DSP_TYPE_PITCHSHIFT, &dsp);  
dsp->setParameter(0, 2.0f); 
result = m_soundChannels[i]->addDSP(dsp, 0); 

什么都没有发生在那里。这段代码是在我的自定义播放函数中,并且在我播放声音之前就被执行了(我加载的时间是true,然后进行更改)。 这两个函数都不会向结果变量中抛出任何错误。那怎么了? :S

回答

0

您提到上述代码是在播放声音之前执行的。您必须在System :: playSound或FMOD :: Channel无效后调用Channel :: addDSP。

1

试试这个:

FMOD::DSP* dsp; 
result = m_soundSystem->createDSPByType(FMOD_DSP_TYPE_PITCHSHIFT, &dsp); 
result = m_soundChannels[i]->addDSP(dsp, 0); 
dsp->setParameter(FMOD_DSP_PITCHSHIFT_PITCH, 2.0f);