有人可以解释我为什么不能同时播放两种声音吗?
这里是代码的一部分:
#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);
我的声音是这样的:
FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, scratch, 0, NULL);
FMOD_System_PlaySound(system, FMOD_CHANNEL_FREE, bomb, 0, NULL);
我认为存在一个频道问题,因为当我播放“炸弹”时我能听到它(这声音就像是3秒),但如果发出“刮擦”声,声音“炸弹”就会停止......
答案 0 :(得分:3)
FMOD_System_Init()
中的第二个参数是maxchannels。只需将其设置为2或更高。在官方教程中,他们使用100。
答案 1 :(得分:1)
尝试为您想要同时播放的声音数量创建新系统,或者您可以尝试使用FSOUND_Play而不是FSOUND_Init。
或者您也可以查看Hekkus音响系统。我已经将它用于多种声音并且有效,但它不支持mp3。
答案 2 :(得分:1)
如前所述,初始化系统有更多频道
和强>
在每个FMOD_SYSTEM
之后更新FMOD_System_PlaySound
。
只需插入
即可FMOD_System_Update(system);
然后就可以了。
答案 3 :(得分:0)
每个声音创建一个频道,它可以正常工作或使用FMOD_CHANNEL_FREE