Как изменить высоту звука с помощью JavaScript?
Допустим, у вас есть аудио переменная с именем audio
и он хранит звук.
Я знаю, как изменить скорость, например:
audio.playBackRate = 2;
Но я не знаю, как изменить подачу.
Есть audio.pitch
атрибут или я должен создать его сам?
Я хочу сделать что-то вроде этого:
var audio = new Audio();
audio.src = "sound_effect.wav";
audio.pitch = 2 //doubling the pitch but there is no pitch attribute
audio.play();
3 ответа
Я думаю, что вам нужно использовать библиотеку, чтобы применить смещение высоты тона к вашему аудиосигналу. Вы можете использовать Titch.js PitchShift. Посмотрите этот JSFiddle пользователя GitHub Jexim для рабочего примера. Я скопировал наиболее важные части из этой скрипки ниже:
Javascript:
var player = new Tone.Player("http://example.com/my-audiofile.mp3").sync().start(0);
var pitchShift = new Tone.PitchShift({
pitch: -5
}).toMaster();
player.connect(pitchShift);
Tone.Buffer.on('load', () => {
alert('Ready for play');
});
window.play = function() {
Tone.Transport.start();
}
HTML:
<script src="https://unpkg.com/tone@next/build/Tone.js"></script>
<button onclick="play()">Play</button>
API Тона, похоже, несколько изменился с момента этого ответа . Вот код, который отражает последнюю версию (по состоянию на 2022 год):
как я изменяю высоту тона в JavaScript?
Math.pow(2, slidervalue/12 )