更改HTML5音频节点的声音音高

时间:2014-11-12 20:59:19

标签: html5 audio

我想使用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();
}());

1 个答案:

答案 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.htmlhttps://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode了解更多信息。

希望这有帮助!