C 无法同时播放两种声音

C 无法同时播放两种声音,c,fmod,C,Fmod,有人能解释一下为什么我不能同时演奏两种声音吗 下面是代码的一部分: #include <fmod.h> FMOD_SYSTEM *system; FMOD_SOUND *dooropen; FMOD_SOUND *keydoor; FMOD_SOUND *slap; FMOD_SOUND *bomb; FMOD_SOUND *scratch; FMOD_SOUND *secret; FMOD_SOUND *pickey; FMOD_SOUND *caisse; FMOD_RESU

有人能解释一下为什么我不能同时演奏两种声音吗

下面是代码的一部分:

#include <fmod.h>

FMOD_SYSTEM *system;
FMOD_SOUND *dooropen;
FMOD_SOUND *keydoor;
FMOD_SOUND *slap;
FMOD_SOUND *bomb;
FMOD_SOUND *scratch;
FMOD_SOUND *secret;
FMOD_SOUND *pickey;
FMOD_SOUND *caisse;

FMOD_RESULT resultat1;
FMOD_RESULT resultat2;
FMOD_RESULT resultat3;
FMOD_RESULT resultat4;
FMOD_RESULT resultat5;
FMOD_RESULT resultat6;
FMOD_RESULT resultat7;
FMOD_RESULT resultat8;


FMOD_System_Create(&system);
FMOD_System_Init(system, 1, FMOD_INIT_NORMAL, NULL);


resultat1 = FMOD_System_CreateSound(system, "sound/door-open.mp3", FMOD_CREATESAMPLE, 0, &dooropen);

resultat2 = FMOD_System_CreateSound(system, "sound/key-door.wav", FMOD_CREATESAMPLE, 0, &keydoor);

resultat3 = FMOD_System_CreateSound(system, "sound/slap.wav", FMOD_CREATESAMPLE, 0, &slap);

resultat4 = FMOD_System_CreateSound(system, "sound/bomb.wav", FMOD_CREATESAMPLE, 0, &bomb);

resultat5 = FMOD_System_CreateSound(system, "sound/scratch.wav", FMOD_CREATESAMPLE, 0, &scratch);

resultat6 = FMOD_System_CreateSound(system, "sound/secret.wav", FMOD_CREATESAMPLE, 0, &secret);

resultat7 = FMOD_System_CreateSound(system, "sound/pickey.wav", FMOD_CREATESAMPLE, 0, &pickey);

resultat8 = FMOD_System_CreateSound(system, "sound/caisse.wav", FMOD_CREATESAMPLE, 0, &caisse);

我认为这是一个频道问题,因为当我播放“bomb”时,我可以听到它(这个声音大约3秒),但如果出现“刮擦”声音,“bomb”停止了…

尝试创建新的系统,以满足您同时播放的声音量,或者您可以尝试使用FSOUND_play而不是FSOUND_Init


或者你也可以查看Hekkus音响系统。我已经在多个声音中使用了它,但它不支持mp3。

FMOD\u System\u Init()中的第二个参数是maxchannels。只需将其设置为2或更高。在官方教程中,他们使用100。

为一个声音创建一个频道,这样可以很好地工作,或者使用FMOD\u channel\u FREE

如前所述,为系统创建更多频道

每次
FMOD\u系统播放声音后更新
FMOD\u系统

插入

FMOD_System_Update(system);

然后就可以了。

谢谢,我又创建了7个系统,效果很好,但我认为这不是最好的解决方案。。我不明白为什么我需要为每个声音创建一个系统!
FMOD_System_Update(system);