2012-05-22 103 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