Как изменить высоту звука в JavaScript без изменения скорости?

Привет, ребята! У меня возник вопрос по работе со звуком в JavaScript. Я знаю, как менять скорость воспроизведения аудио, используя playbackRate. Но как быть, если нужно изменить только высоту звука, не трогая скорость?

Я пытался найти что-то вроде audio.pitch, но такого свойства, похоже, нет. Может, кто-нибудь знает, как это сделать? Вот пример кода, который я хотел бы реализовать:

let звук = new Audio('мелодия.mp3');
звук.высота = 1.5; // увеличиваем высоту в полтора раза
звук.play();

Буду благодарен за любые идеи или подсказки! Может, есть какие-то библиотеки для этого?

слушай, я недавно столкнулся с подобной задачей. оказывается, чтобы поменять высоту звука без изменения скорости, нужно использовать web audio api, который работает немного сложнее обычного audio объекта, но даёт больше возможностей.

сначала создаёшь audioContext, подключаешь источник звука, потом добавляешь ноду для изменения высоты (pitch shifter) и настраиваешь питч через неё. могу посоветовать библиотеки типа tone.js, которые значительно упрощают работу. может, стоит попробовать? в любом случае, тема интересная для экспериментов.

Слушай, для изменения высоты звука без затрагивания скорости можно попробовать использовать PitchShifter из библиотеки Wavesurfer.js. Она позволяет манипулировать аудио более гибко. Вот примерный код:

const wavesurfer = WaveSurfer.create({
container: ‘#waveform’,
plugins: [WaveSurfer.PitchShift.create()]
});

wavesurfer.load(‘мелодия.mp3’);
wavesurfer.pitchShift.shift = 1.5;

Это должно сработать. Попробуй и дай знать, как получилось!