Javascript JS AudioContext接口:我这样做对吗?

Javascript JS AudioContext接口:我这样做对吗?,javascript,audiocontext,Javascript,Audiocontext,我有以下功能: var PE_AudioManager_playSe = AudioManager.playSe; AudioManager.playSe = function(se) { if (se.name.substring(0,5) === `data:`) { let audioContext = new (window.AudioContext || window.webkitAudioContext)(); let gainNode

我有以下功能:

var PE_AudioManager_playSe = AudioManager.playSe;
AudioManager.playSe = function(se) {

    if (se.name.substring(0,5) === `data:`) {

        let audioContext = new (window.AudioContext || window.webkitAudioContext)();

        let gainNode = audioContext.createGain();
        gainNode.gain.value = (se.volume / 100) || 0;

        let panNode = audioContext.createStereoPanner();
        panNode.pan.value = (se.pan / 100) || 0;

        let source = audioContext.createBufferSource();
        audioContext.decodeAudioData(se.name.split(`,`)[1].base64ToArrayBuffer(), function(buffer) {
            source.buffer = buffer;
            source.connect(gainNode);
            source.connect(panNode);
            source.connect(audioContext.destination);
            source.detune.value = (se.pitch - 100);
            source.start(0);
         });

    } else {

        PE_AudioManager_playSe.call(this,se);
    };

};
它是处理音频效果播放的现有函数的别名。如果源对象的.name属性是数据URI/base64而不是文件名,则此别名“截取”例程并使用接口播放声音

声音效果播放没有问题,除了我认为我没有正确地进行平移(.createStereoPanner)或音量(.createGain)-如果我调整平移或音量,我认为我听不到任何区别。但我可能错了/疯了


这个代码看起来正确吗?谁能给我指出正确的方向吗?提前感谢。

增益节点和平移节点有最小值和最大值。控制您的输入,以便遵守这些范围。但问题出在别处

const ctx=newaudiocontext();
const gainNode=ctx.createGain();
const panNode=ctx.createStereoPanner();
log(gainNode.gain.minValue,gainNode.gain.maxValue);

log(panNode.pan.minValue,panNode.pan.maxValue)增益和增益节点具有最小值和最大值。控制您的输入,以便遵守这些范围。但问题出在别处

const ctx=newaudiocontext();
const gainNode=ctx.createGain();
const panNode=ctx.createStereoPanner();
log(gainNode.gain.minValue,gainNode.gain.maxValue);

log(panNode.pan.minValue,panNode.pan.maxValue)使用什么信息来证明“不正确”?确切的问题应该解释清楚。谢谢@user2864740。我想我听不到锅和/或音量的变化。我已经阐述了我的问题,以反映这一点。当直接使用原件时,它是否正常工作?可能有在线小提琴,可以用作现场演示/参考。@user2864740声音播放,我没有收到任何错误。我只是觉得当我测试它时,我听不到音高或音量的差异,所以我问。。。希望有人有AudioContext经验,可以阅读我的代码并验证逻辑是否正确。我在哪里可以找到这些小提琴?用什么信息来证明“不正确”?确切的问题应该解释清楚。谢谢@user2864740。我想我听不到锅和/或音量的变化。我已经阐述了我的问题,以反映这一点。当直接使用原件时,它是否正常工作?可能有在线小提琴,可以用作现场演示/参考。@user2864740声音播放,我没有收到任何错误。我只是觉得当我测试它时,我听不到音高或音量的差异,所以我问。。。希望有人有AudioContext经验,可以阅读我的代码并验证逻辑是否正确。我在哪里能找到这些小提琴?