我想使用HTML 5 Audio节点更改声音文件的音高。 我有一个使用setVelocity属性的建议,我发现这是Panner Node的一个功能 我有以下代码,我尝试更改调用参数,但没有可识别的结果。
有人有什么想法吗?
我有以下代码:
var gAudioContext = new AudioContext()
var gAudioBuffer;
var playAudioFile = function (gAudioBuffer) {
var panner = gAudioContext.createPanner();
gAudioContext.listener.dopplerFactor = 1000
source.connect(panner);
panner.setVelocity(0,2000,0);
panner.connect(gainNode);
gainNode.connect(gAudioContext.destination);
gainNode.gain.value = 0.5
source.start(0); // Play sound
};
var loadAudioFile = (function (url) {
var request = new XMLHttpRequest();
request.open('get', 'Sounds/English.wav', true);
request.responseType = 'arraybuffer';
request.onload = function () {
gAudioContext.decodeAudioData(request.response,
function(incomingBuffer) {
playAudioFile(incomingBuffer);
}
);
};
request.send();
}());
答案 0 :(得分:0)
我正在尝试实现类似的功能,但我也未能使用PannerNode.setVelocity()
。
我找到的一种工作方法是使用以下包(自述文件中包含的示例):https://www.npmjs.com/package/soundbank-pitch-shift
也可以使用biquad过滤器,原生可用。在此处查看示例:http://codepen.io/qur2/pen/emVQwW 我没有找到一个简单的声音使其显而易见(带有ajax加载的CORS限制)。 您可以在http://chimera.labs.oreilly.com/books/1234000001552/ch04.html和https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode了解更多信息。
希望这有帮助!