Как я могу сгенерировать всю октаву с помощью Web Audio API?

Я узнаю об API веб-аудио из этой статьи.

Если я загружаю фортепианный звук ноты DO с помощью Web Audio API, как я могу сгенерировать RE, MI, FA, SOL, LA, SI, DO2?


person Aidas Bendoraitis    schedule 30.10.2013    source источник


Ответы (1)


Изменяя параметр «playbackRate» AudioBufferSourceNode для настройки скорости (и, следовательно, высоты тона). Обратите внимание, однако, что звуковые сэмплы, такие как фортепиано, имеют тенденцию звучать явно неестественно, когда вы возвращаете их более чем на пару шагов — обычно у вас будет несколько сэмплов, а не попытка охватить более полудюжины нот одним звуковым семплом. (Например, вы должны взять сэмпл DO, использовать его для RE и MI, сэмплировать FA... ну вы поняли.)

person cwilso    schedule 31.10.2013
comment
Спасибо. Это поставило меня на мой путь. Есть ли какая-то формула определения правильной скорости воспроизведения для каждой ноты? Кажется, мне нужно установить значения в формате с плавающей запятой. - person Aidas Bendoraitis; 31.10.2013
comment
Ознакомьтесь с en.wikipedia.org/wiki/. Короче говоря, каждый полушаг в 2 ^ (1/12) раза больше предыдущего; поэтому, если у вас есть аудиобуфер, представляющий C, чтобы получить C#, вы умножаете скорость воспроизведения 1 на Math.pow(2,1/12). - person cwilso; 01.11.2013
comment
Но даже если мы загрузим звук, он не будет звучать естественно. Это кажется очень однообразным, что еще мы можем там сделать? @cwilso - person Gurjit; 27.06.2015
comment
Запишите гораздо больше фортепианных сэмплов. Нет, правда — для реалистичного звучания не хочется растягиваться больше, чем на пару полутонов. Большинство мультисемплированных фортепиано сэмплируют каждые несколько нот. - person cwilso; 01.07.2015