2016-09-05 2 views
1

У меня есть песня, состоящая из интро (I), части, которая должна быть закольцована (L), и заканчивается (E). Я не хочу, чтобы финал вообще воспроизводился, т. Е. Звуковая композиционная песня = I + L + E, звук играл = I + L + L + ...Декодирование звука и воспроизведение вступят затем в петлевую часть

Мне это удалось, разделив ввод и цикл в два файла, но я хочу сделать это «на лету» на стороне клиента.

Как это сделать?

ответ

1

Web Audio API предоставляет AudioBufferSourceNode.loopStart и AudioBufferSourceNode.loopEnd (source) именно для этого. Не забудьте также установить AudioBufferSourceNode.loop = true.

0

Если вы хотите воспроизвести файл с помощью веб-аудио (например, декодировать в AudioBuffer с помощью decodeAudioData(), а затем воспроизвести звук с помощью BufferSourceNodes), то это легко сделать, указав два буфера источника данных в буфере с различными смещениями, и зацикливание второго.

Веб-аудио использует удвоение (не плавает) - поэтому утверждение «это намного точнее, чем поплавка секунд», как правило, не имеет значения (удваивает около 15 знаков после запятой). (Разумеется, зависит от абсолютного значения.) Это более чем достаточно точная игра с точностью выборки (т. Е. Не сбой между значениями); если вы беспокоитесь, просто перекрестите между ними.

Если ваша цель - просто создать звуковой файл с этой частью, это немного отличается; но похоже, что вы хотите воспроизвести.

Смежные вопросы