javascript - 在 Javascript 中控制音频平衡 (L/R)

标签 javascript audio

我想在使用此代码时控制音频平衡

var oscillator = audioCtx.createOscillator();

oscillator.type = 'square';
oscillator.frequency.value = frequency; // value in hertz
oscillator.connect(audioCtx.destination);
oscillator.start();
setTimeout(function(){oscillator.stop();}, duration);   

以及当我播放本地 mp3 文件时。 我怎样才能做到这一点?

最佳答案

添加StereoPannerNode使用createStereoPanner到链:

var oscillator = audioCtx.createOscillator();
var panner = audioCtx.createStereoPanner();

oscillator.type = 'square';
oscillator.frequency.value = frequency;  // value in hertz
oscillator.connect(panner);              // connect audio source to panner
panner.connect(audioCtx.destination);    // connect panner to output
oscillator.start();

现在您可以使用以下方式控制左/右:

panner.pan.value = someValue;   // value in the range -1 (L) to 1 (R)

功能示例:

var audioCtx = new (AudioContext || webkitAudioContext)();
var oscillator = audioCtx.createOscillator();
var panner = audioCtx.createStereoPanner();

oscillator.type = 'square';
oscillator.frequency.value = 440; // value in hertz
oscillator.connect(panner);
panner.connect(audioCtx.destination);
oscillator.start();

document.querySelector("input").oninput = function() {
  panner.pan.value = +this.value; 
};

setInterval(function() {
  oscillator.frequency.value = Math.round(Math.random() * 10) * 400 + 200;
}, 100);
<label>L <input type=range min=-1 max=1 value=0 step=0.01> R</label>

关于javascript - 在 Javascript 中控制音频平衡 (L/R),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45968852/

相关文章:

firefox - 在Firefox中使用SoundJS播放文件

javascript - 加载多个音频文件,即使互联网连接不佳也可以同时播放

iOS 在使用 ffmpeg 添加的音频和字幕轨道之间切换

javascript - 对父原型(prototype)的更改为子原型(prototype)添加了属性

javascript - 使用 JavaScript 将按钮元素移动到不同的 div(父级)

javascript - Google 表单编辑链接不提交现有值,只提交那些在使用 google 脚本时更改的值?

javascript - Web音频API GainNode值MaxValue是多少

安卓音频环回?

JavaScript 从 div 标签获取值

Javascript 设置一个变量,该变量在每个子元素上发生变化