FMOD воспроизводит несколько звуков одновременно

Мне нужно было играть несколько звуков одновременно, поэтому я попытался инициализировать 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 каналов!
Что я могу сделать, чтобы воспроизвести много звуков одновременно?

0

Решение

Проблема была в том, что я забыл 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);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]