2

我在用 fmod 调整 pitch 时遇到问题。我可以用 channel::setfrequency 做到这一点,但我需要在更大的 sfx 上使用它,因此需要 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

4

2 回答 2

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);
于 2013-01-17T15:56:58.480 回答
0

你提到上面的代码是在你播放声音之前执行的。您必须在 System::playSound 之后调用 Channel::addDSP,否则 FMOD::Channel 将无效。

于 2012-12-20T11:40:50.483 回答