FMOD - 同时播放多个声音?

发布于 2024-12-17 14:06:29 字数 937 浏览 1 评论 0原文

我正在尝试设置我的声音管理器(FMOD)以在不同通道上播放背景音乐和其他动作声音,因为我知道这是使用 FMOD 同时发出声音的唯一方法......我的设置如下,如果我调用 playRepeat,然后 playOnce 第一个曲目停止!

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);

}

...尽管我使用两个独立的频道...我是否遗漏了一些东西?

I am trying to set up my Sound Manager (FMOD) to play a background music and other action sounds on different channels, as I understand that this is the only way of having simultaneous sounds with FMOD.... My setup is below, if I call playRepeat and then playOnce the first track stops!

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);

}

...despite the fact that I AM using two separate channels.... am I missing something?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧城空念 2024-12-24 14:06:30

问题是我只用一个通道初始化 FMOD,

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

将其更改为更高的数字使上述设置可以正常工作!

The issue was that I was only initialising FMOD with one channel

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

Changing that to a higher number made the setup above work ok!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文