API webaudio: отрегулировать продолжительность воспроизведения аудиосэмпла (например, "C5.mp3")?

Могу ли я использовать сэмпл (soundfont), например, "C5.mp3", и увеличивать или сокращать его продолжительность в течение заданного времени (без искажения высоты тона)?

(Было бы здорово, если бы это было так же просто, как использовать осциллятор и изменить временные характеристики NoteOn и NoteOff, но с более естественным звуком, а не синусоидальными волнами)? (Можно ли сделать это легко, не прибегая к MIDI.js или подобному?)

2 ответа

Вам нужно будет либо зациклить mp3, либо записать более длинный сэмпл. Зацикливание может быть сложным, чтобы сделать бесшовное без щелчков или щелчков, и в зависимости от образца вы услышите атаку ноты каждый раз, когда она зацикливается.

.mp3s и другие форматы записанного звука - это конечные, заранее определенные наборы двоичных данных. Причина, по которой так легко манипулировать синусоидальными сигналами с помощью осциллятора, заключается в том, что веб-аудио API динамически генерирует волну на основе входного сигнала, который вы ей даете.

У хороших звуковых шрифтов есть точки петли для бесконечных звуков. Смотрите пример для WebAudioFont

https://surikov.github.io/webaudiofont/examples/flute.html

Другие вопросы по тегам