FMOD频道setVolume不起作用

时间:2011-08-25 07:24:08

标签: audio fmod

我用这个:

err = channel->setVolume(someVolumeBetween0and1);

即使错误是FMOD_OK,音量也不会改变。难道我做错了什么?有没有办法改变声音(频道)的音量?是否有其他的音量范围而不是[0,1]?

谢谢!

编辑:我在此之后使用setVolume:

err = soundSystem->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);

5 个答案:

答案 0 :(得分:6)

我在FMOD手册中找到了有关音量的内容: “当播放声音时,它将使用声音的默认频率,音量,声相,音量和优先级...... 要在声音可听之前更改通道属性,请通过将暂停标志设置为true来启动暂停的通道,并调用相关的基于通道的功能。然后,使用Channel :: setPaused取消暂停频道。

所以,正确的代码应该是这样的:

err = soundSystem->playSound(FMOD_CHANNEL_FREE, sound, true, &channel);
err = channel->setVolume(someVolumeBetween0and1);
err = channel->setPaused(false);

或者,您也可以尝试这个:

err = soundSystem->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
err = channel->setVolume(someVolumeBetween0and1);

答案 1 :(得分:2)

更改setVolume和playSound的顺序,它适用于我的项目

答案 2 :(得分:1)

我不是百分百确定,但在设置音量解锁之前可能需要停止/暂停声音,并在音量设定后继续播放声音。

要检查的其他事项可能是声音正在正确的通道上播放(或者您正在正确的通道上设置音量)。声音是否锁定?声音可能是覆盖音量的通道组的一部分(虽然FMOD文档说通道组应该缩放,而不是覆盖)?

答案 3 :(得分:0)

我在使用FMOD时遇到了这个问题,并且走了很多这样的道路。我试着暂停声音。我想知道是不是因为我的声音被打圈了。

最后,它完全是一个应用程序问题。我没有使用正确的渠道对象。

无需暂停以改变音量。播放声音的点最初暂停,然后将音量设置为非默认值,然后取消暂停声音,是为了避免在默认音量下短暂播放该声音。

答案 4 :(得分:0)

试试这个

result = channle->setPaused(false);//after you set volume