Войти
ПрограммированиеФорумЗвук

Fmod EX, глупый, наверное, вопрос

#0
0:55, 1 сен. 2009

Осваиваю fmod ex (4.26, linux), вроде всё замечательно, но возник затык/вопрос.
При попытке проиграть один и тот же буфер через разные сорсы - проигрывается только в последнем ;(

  // int - просто номер экземпляров в массиве, хранящемся в классе Sound
  int chan1 = Sound->AddChannel();
  int chan2 = Sound->AddChannel();

  int snd1 = Sound->LoadSound("/home/wingman/code/svn/repos/app1/sounds/1.wav", true);
  Sound->PlaySound(snd1, chan1);

  int snd2 = Sound->LoadSound("/home/wingman/code/svn/repos/app1/sounds/2.wav", true);
  Sound->PlaySound(snd2, chan1);

        // через x секунд:
  Sound->PlaySound(snd2, chan2);    //- тут начинает проигрываться через 2й сорц, но через первый - замолкает
Ну и собсно вопрос: как это обойти? Элементарная ситуация: Х юнитов стреляют из чего-нибуть одинакового; не грузить же для каждого звук в отдельный буфер?

#1
11:13, 1 сен. 2009

Звук читается как поток? Тогда все верно...

#2
11:49, 1 сен. 2009

Ога, спасибо, понял =)

Сделал с createSound, сразу другой вопрос: несколько раз проигрывается одновременно оба чанела, но через некоторое время - опять двадцать пять, начинает играть только один в один момент времени, и так до перезапуска. Что такое, как побороть? =)

#3
12:54, 1 сен. 2009

Предполагаю, нужно както освобождать канал после окончания звука.

#4
0:34, 2 сен. 2009

Собсно, если бы сразу покопался повнимательнее (читай: если бы не лень), нашел бы сразу... Периодически нужно вызывать FMOD::System->update(), чтобы обновлять информацию в библиотеке, в т.ч. помечать свободными каналы, звук в которых уже отиграл. Тупой косяк =)

ПрограммированиеФорумЗвук

Тема в архиве.