FMOD同时播放多种声音
FMOD play multiple sounds at same time
我需要同时播放多个声音,所以我尝试用许多通道初始化FMOD::System
,但在播放一些文件后,它什么也没做。当我睡眠1秒时,声音停止,count
约为35,睡眠0.1秒时,最后一个count
约为100。
int count = 1;
FMOD::System *system = NULL;
FMOD::System_Create(&system);
system->init(100, FMOD_INIT_NORMAL, 0);
while(true)
{
FMOD::Sound *sound = NULL;
system->createSound("test.wav", FMOD_DEFAULT, FMOD_DEFAULT ,&sound);
FMOD::Channel *channel = NULL;
FMOD_RESULT result = system->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
cout << "count: " << count << ", " << result;
count++;
struct timespec ts;
ts.tv_sec = 1;
nanosleep(&ts, NULL);
}
当我把这部分写进while循环时,我也意识到,指向FMOD::System
的指针在一开始就发生了变化,几秒钟后保持不变。
FMOD::System *system = NULL;
FMOD::System_Create(&system);
system->init(100, FMOD_INIT_NORMAL, 0);
我做错了什么?它甚至不使用100个频道!我能做些什么来同步播放许多声音?
问题是,我忘记了system->update()
代码应该如下所示:
int count = 1;
FMOD::System *system = NULL;
FMOD::System_Create(&system);
system->init(100, FMOD_INIT_NORMAL, 0);
while(true)
{
FMOD::Sound *sound = NULL;
system->createSound("test.wav", FMOD_DEFAULT, FMOD_DEFAULT ,&sound);
FMOD::Channel *channel = NULL;
FMOD_RESULT result = system->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
system->update(); // very important!!!
cout << "count: " << count << ", " << result;
count++;
struct timespec ts;
ts.tv_sec = 1;
nanosleep(&ts, NULL);
}
相关文章:
- 如何收听Windows当前正在播放的声音?
- 如何在C++中播放声音?
- 有没有办法毫不拖延地播放声音?
- 在不打开应用程序的情况下在MinGW c++中播放声音(.wav)文件
- 如何在QT中飞溅之前播放声音?
- 计时器达到零时如何播放声音?
- 如何在主游戏循环中使用 sfml 只播放一次声音
- 每次播放前都会出现超强的 SDK 声音故障
- 使用MinGW播放声音
- 如何从McIsendstring()中解决此错误并使其播放声音
- 如何强制停止声音/ bgm正在通过PlaySound方法播放
- 如何在 XAudio2 上同时播放多个声音
- 如何在 c++ 中播放声音
- 视觉 在C++中正确使用播放声音功能
- 如何使用Media Foundation同时播放两个声音
- Portaudio:通过调用功能播放多个生成的声音
- 切换音频设备时播放声音的SDL问题
- XAudio2 延迟声音 - 播放多个声音时
- 采样率偏差和声音播放位置
- 如何通知我的应用程序默认声音播放设备已更改