无法同时播放两种声音

时间:2012-05-22 21:05:17

标签: 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_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秒),但如果发出“刮擦”声,声音“炸弹”就会停止......

4 个答案:

答案 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