API webaudio: отрегулировать продолжительность воспроизведения аудиосэмпла (например, "C5.mp3")?
Могу ли я использовать сэмпл (soundfont), например, "C5.mp3", и увеличивать или сокращать его продолжительность в течение заданного времени (без искажения высоты тона)?
(Было бы здорово, если бы это было так же просто, как использовать осциллятор и изменить временные характеристики NoteOn и NoteOff, но с более естественным звуком, а не синусоидальными волнами)? (Можно ли сделать это легко, не прибегая к MIDI.js или подобному?)
2 ответа
Вам нужно будет либо зациклить mp3, либо записать более длинный сэмпл. Зацикливание может быть сложным, чтобы сделать бесшовное без щелчков или щелчков, и в зависимости от образца вы услышите атаку ноты каждый раз, когда она зацикливается.
.mp3s и другие форматы записанного звука - это конечные, заранее определенные наборы двоичных данных. Причина, по которой так легко манипулировать синусоидальными сигналами с помощью осциллятора, заключается в том, что веб-аудио API динамически генерирует волну на основе входного сигнала, который вы ей даете.
У хороших звуковых шрифтов есть точки петли для бесконечных звуков. Смотрите пример для WebAudioFont