2012-05-22 107 views
2

有人可以解释为什么我不能同时播放两个声音吗?无法同时播放两个声音

这里的代码的一部分:

#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秒钟),但如果发生“刮伤”声音,声音“炸弹”正在停止...

回答

1

正如之前所说的init系统更多的频道

更新FMOD_SYSTEM后每个FMOD_System_PlaySound

只需插入

FMOD_System_Update(system); 

然后,它会好起来的。

1

尝试创建新的系统,以便同时播放多个声音,或者哟你可以尝试使用FSOUND_Play而不是FSOUND_Init。

或者您还可以查看Hekkus音响系统。我用它已经为多个声音和工作,但它不支持MP3。

+0

谢谢,我创建了7个系统,它工作正常,但我不认为这是最好的解决方案..我不明白为什么我需要为每个声音创建一个系统! –

3

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

0

创建每一声一个通道,它会正常工作或使用FMOD_CHANNEL_FREE