это продолжение моего предыдущего вопроса: Рендеринг некоторых звуковых данных в одну новую звуковую информацию?
Я создаю программу, которая будет обрабатывать файл, содержащий звуковой банки временные смещения, чтобы отметить, когда звук должен быть воспроизведен, и сгенерировать из него волновой файл.
Так что я полагаю, что FMOD_OUTPUTTYPE_WAVWRITER идеально подходит для работы.
Для звукового банка представьте что-то вроде этогов файле:
0 kick.wav
1 hit.wav
2 flute.wav
, где число слева описывает идентификатор звука для имени звукового файла справа, а временные смещения:
1000 0
2000 1
3000 2
, где число наСлева сообщается программе, когда звук должен воспроизводиться в миллисекундах, а число справа - это идентификатор звука.
Поэтому, когда я запускаю программу, FMOD сгенерирует волновой файл, содержащий удар (изkick.wav) в первую секунду, удар во вторую секунду и флейта в третью секунду, и мне придется подождать не менее 3 секунд для завершения задания.
Однако если я хочу воспроизвести более длинную музыку, скажем, 5 минут, то мне нужно подождать не менее 5 минут, чтобы задача завершилась, поскольку я устанавливаю зависимость от системного таймера для воспроизведения звука с указаннойсмещение в файле и цикл while (true) для обновления FMOD :: System.Я думаю, что должен быть способ рендеринга быстрее, не дожидаясь, пока программа на самом деле воспроизведет звук в указанное время, так как я видел в такой программе DAW, как, например, Sony ACID, возможность рендеринга треков очень быстро.
Затем я немного посмотрю на ссылку API, там есть FMOD_OUTPUTTYPE_WAVWRITER_NRT, затем я подумал, что это может быть решением, поэтому я попытался сразу изменить устройство вывода, ничего не изменяя, и сгенерированный волновой файл звучит неправильно!Я слышу много повторяющихся звуков, длительных задержек и т. Д.
Итак, как правильно использовать версию не в реальном времени?Как правильно обновить систему fmod при использовании NRT в моем случае?
Я не смог найти четкого объяснения использования типа выхода NRT в самой документации fmod.
В любом случае, я использую C ++ в среде Windows.
Спасибо.