FMOD用完了频道,FMOD_CHANNEL_FREE似乎无法正常工作

时间:2011-06-02 11:47:31

标签: iphone c++ audio fmod

我正在用32个通道初始化FMOD并使用以下代码播放短样本(1秒):

result = system->init(32, FMOD_INIT_NORMAL , NULL);
// here I load the sounds //
result = system->playSound(FMOD_CHANNEL_FREE, grid[_sound], false, &channel);

它按预期工作,重叠声音,但现在我意识到当我播放32个样本(不是同时)时,一次只能播放一个声音。看起来FMOD_CHANNEL_FREE的行为类似于增量计数器,当它达到32时,它会停留在那里,当它仍然在播放时播放新声音时停止最后一个声音。

我们是否必须在停止播放时删除声音?怎么样?我觉得我错过了一些基本的东西

谢谢!

马克

3 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。事实证明我忘了每帧都打system->update()。一旦我把它放进去,它工作正常。

答案 1 :(得分:0)

听起来这些频道还在播放(但是没声音),你能查看频道:: isPlaying并看看它们是否还在继续吗?

如果没有帮助,可能会发布更多代码。

答案 2 :(得分:0)

你可以验证你用多个最大通道初始化fmod系统吗? 尝试使用以下代码来初始化你的fmod系统:

    System->init(32, FMOD_INIT_NORMAL, 0);

或者你忘了打电话了

    System->Update();