2011-11-21 93 views
3

我試圖設置我的聲音管理器(FMOD)在不同的頻道播放背景音樂和其他動作聲音,據我所知,這是與FMOD同時發聲的唯一方法....我的設置在下面,如果我撥打playRepeat,然後playOnce第一首曲目停止!FMOD - 同時播放多個聲音?

void SoundMgr::addSound(char *path, string n){ 
    Sound* s; 
    fmodsys->createSound(path, FMOD_SOFTWARE | FMOD_2D | FMOD_CREATESTREAM, 0, &s); 


    soundMap.insert(pair<string,Sound*>(n, s)); 
} 

void SoundMgr::playOnce(string name){ 

    fmodsys->playSound(FMOD_CHANNEL_FREE, 
     soundMap.find(name)->second, true, &fmodchn); 
    fmodchn->setPosition(0, FMOD_TIMEUNIT_PCM); 
    fmodchn->setPaused(false); 
} 

void SoundMgr::playRepeat(string name){ 

    fmodsys->playSound(FMOD_CHANNEL_FREE, 
     soundMap.find(name)->second, true, &backChn); 
    backChn->setMode(FMOD_LOOP_NORMAL); 
    backChn->setPosition(0, FMOD_TIMEUNIT_PCM); 
    backChn->setPaused(false); 

} 

...儘管事實上我使用了兩個獨立的通道....我是否錯過了什麼?

回答

4

的問題是,我是唯一的初始化FMOD一個通道

fmodsys->init(1,FMOD_INIT_NORMAL,0); 

改變這種以較高的號碼進行上述工作確定的設置!