如何同时播放两个或多个声音

时间:2016-03-30 15:38:08

标签: c++ visual-studio audio fmod directsound

我对编程很陌生,我在编程的第一年就是这样; CS1B。

我在Visual Studio 2015中制作文字冒险游戏,我想使用两种声音,如背景音乐和声音效果。

但每当我尝试这样做时,第一个声音会在第二个声音开始时停止。我使用PlaySound()功能来发出声音。我知道FMODDirectSound,但我真的不知道如何设置它。

我试着看看如何做到这一点,但我找到的东西对我来说真的很难。任何帮助都会很好。感谢。

3 个答案:

答案 0 :(得分:0)

您可以将声音分为SFX和音乐(使用音乐系统)。这样,您就可以从声音效果事件中单独控制背景音乐(以及利用其音乐特定功能)。

通常,您需要为正在播放的每个声音分别设置一个事件/声音实例。如果你只有一个,它可能会被盗“#39;这可能是您遇到问题的最可能原因。这也可能是因为你的频道。

我不确定您是否使用FMOD Studio或FMOD Designer / FMOD Ex,因此它实际上取决于您使用的是哪一个。无论如何,如果您刚刚开始,我建议您阅读 FMOD事件系统 - 程序员最佳实践 您可以从互联网获取的文档,以及 FMOD Ex程序员的API 文档(您必须有一个帐户才能下载它,但它是值得的。 )

祝你好运。

答案 1 :(得分:0)

PlaySound只有一个声音'使用,因此它不能一次播放多个声音。

要一次播放多个声音需要一个实时混音器,所以你需要使用其他东西:XAudio2,FMOD,Wwise,MSS,OpenAL等。

  

DirectSound已弃用,自2000年以来一直没有更新。它仍然存在于BackCompat,但有许多限制和其他微妙的遗留行为。任何人仍然应该使用DirectSound的唯一原因是他们的目标是Windows XP。

如果您使用的是C ++,则应该查看DirectX Tool Kit for Audio这是XAudio2的简单C ++包装器。

答案 2 :(得分:-1)

我猜想简单的多线程可以做到:

#include <thread>
...
thread playsound(&playsound, this, <other params>);
playsound.detach();
thread othersound(&playsound, this, <other params>);
othersound.detach();
祝你好运