Посмотрите на эту страницу: https://alligator.io/js/first-steps-web-audio-api/
Часть, относящаяся к вашему вопросу, находится внизу:
/* The frequency (in Hz) of Bb4 is 466.16 */
oscillator
.frequency
.setValueAtTime(466.16, audioContext.currentTime);
Примечаниезаключается в том, что сначала создается объект «осциллятор», а затем в коде шаг узла можно регулировать в потоке с помощью приведенного выше кода.Вы уже создали свой узел (то, что вы называете своим audioCtx
объектом).Этот объект имеет значение частоты, которое должно быть изменено на лету.Случай выше для статического изменения высоты тона.Вам нужно будет одновременно получить частоту, а затем изменить ее по разнице желаемой высоты тона и использовать setValueAtTime
для обновления этого значения.
В качестве альтернативы, вы можете установить этот пакет и использовать его дляработать с изменением высоты тона проще:
https://github.com/mmckegg/soundbank-pitch-shift
Наконец, есть другое решение, использующее объект AudioContext, найденный здесь (с использованием метода detune
): https://codepen.io/qur2/pen/emVQwW