我是一名学习 JavaScript 的初学者。我的网站上有一个与微调频率和行星频率相关的交互式页面,我已经想到了各种项目。 我需要能够循环播放我的音频样本 .wav 文件,但音频样本时间会随着相应的音调变化而延长。
我试过 myAudio.playbackRate = 0.5;
播放音频的速度慢了 0.5,但音高保持不变。
我研究并发现了一些东西。但是如何将 preservesPitch
设置为 false 或 true?我认为这只适用于“谷歌浏览器”,所以我找到的其他程序在这里:
https://github.com/janesconference/KievII/blob/master/dsp/pitchshift.js
它似乎无法正常工作,我不知道我应该如何修改它,我应该将我的音频 .wav 文件 URL 粘贴到程序中的什么位置? 与此相关的任何其他提示将不胜感激。 提前感谢您的时间和帮助。
最佳答案
您可以将 mozPreservesPitch
属性设置为 false 以使用 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();
仍在寻找更好的循环方式。
关于带有时间拉伸(stretch)的javascript音高转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25157513/