2014-08-06 5 views
2

Я начинаю изучать javascript. У меня есть разные проекты с интерактивной страницей на моем сайте, связанной с микротонными частотами и планетарными частотами. Мне нужно иметь возможность воспроизвести мой образец звука .wav файл в цикле, но есть образец звука, сэмплин с соответствующим изменением высоты тона.javascript pitch shift с растяжением времени

Я пробовал myAudio.playbackRate = 0.5;, который воспроизводит звук на 0,5 медленнее, но сохраняет тот же уровень. Я исследовал и нашел что-то. Но как установить preservesPitch в false или true? И это работает только в «Google Chrome» Я думаю, поэтому другие программы я нашел здесь:
https://github.com/janesconference/KievII/blob/master/dsp/pitchshift.js

Не похоже, чтобы это заработало, я не знаю, как я должен изменить его, где я вставляю свой аудиофайл .wav-файла в программу? Любые другие советы, связанные с этим, будут высоко оценены. Заранее благодарим за ваше время и помощь.

ответ

0

Некоторые моменты, когда вы сказали I tried myAudio.playbackRate = 0.5;, мы говорим о Web Audio API?

Если да, послушайте снова, то шаг, а также продолжительность выборки будут затронуты.

Если нет, возможно, вы используете встроенную функцию html5, если хотите сохранить исходную скорость и изменить высоту тона в одну сторону после изменения скорости, которую вы применяете, некоторый тип интерполяции попробуйте линейную интерполяцию с тем же коэффициентом, который используется для растягивания ваш звук. Если вам нужна скорость и шаг изменения, просто примените интерполяцию без изменения скорости (в исходном звуке), это может быть эквивалентно воспроизведению вашего аудио с другой частотой дискретизации Web Audio API.

Код pitchshift.js является портом кода из Stephan Bernsee в javascript (это изменить высоту и держать скорость неприкасаемых), необходимо вызвать эту функцию в каждой порции аудио, поэтому сначала вам нужно сделать функцию, которая декодирует аудио файл с коротким int или float.

+0

0

вы можете установить mozPreservesPitch свойство ложно, чтобы изменить высоту элемента или звуковой файл с Firefox. webkitPreservesPitch должен работать с WebKit браузерами, но обратите внимание, что «этот API еще не стандартизирован» ...

https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement

Это работает для меня:

var soundPlayer = new Audio(); 

function playLowerNote() { 
    soundPlayer.src = "piano.mp3"; 
    soundPlayer.mozPreservesPitch = false; 
    soundPlayer.playbackRate = 0.5; 
    soundPlayer.play(); 
} 

playLowerNote(); 

Тем не менее, глядя себе лучший способ к петле.