如何在JavaScript中制作音频立体声

如何在JavaScript中制作音频立体声,javascript,html,frequency,audiocontext,Javascript,Html,Frequency,Audiocontext,我在JavaScript中尝试使用两个不同的音频通道(左声道和右声道)再现不同的频率时遇到了一些问题。我在StackOverflow和Internet上搜索了一段时间,但没有找到任何可以帮助我的东西,所以我决定在这里寻求帮助 让我先解释一下我为什么要这么做。世界上有很多人都有耳鸣(一种“疾病”,你可以在耳朵中听到特定频率的声音,或者同时在耳朵和耳朵中听到特定频率的声音)。有时,人们坐着说耳鸣不是大问题。该网站将允许用户了解“耳鸣者”的听力。为了实现这一点,双耳的音频必须不同,因此我需要在两个不同

我在JavaScript中尝试使用两个不同的音频通道(左声道和右声道)再现不同的频率时遇到了一些问题。我在StackOverflow和Internet上搜索了一段时间,但没有找到任何可以帮助我的东西,所以我决定在这里寻求帮助

让我先解释一下我为什么要这么做。世界上有很多人都有耳鸣(一种“疾病”,你可以在耳朵中听到特定频率的声音,或者同时在耳朵和耳朵中听到特定频率的声音)。有时,人们坐着说耳鸣不是大问题。该网站将允许用户了解“耳鸣者”的听力。为了实现这一点,双耳的音频必须不同,因此我需要在两个不同的声道音频中发送不同的频率

这是我已经拥有的代码,它在mono中复制了特定的频率(这里是完整的应用程序:):

函数letsStart(){
试一试{
window.AudioContext=window.AudioContext | | window.webkitadiocontext;
上下文=新的AudioContext();
}
捕获(e){
警报(“API不工作”);
}
}
函数initFrequency(){
让range=document.getElementById('range').value;
osc=context.create振荡器();
osc.frequency.value=范围;
osc.connect(上下文、目的地);
osc
osc.start(0);
document.querySelector(“.show frequency”).innerHTML=范围+“Hz”;

}
您可以通过使用
通道合并节点
实现所需的结果。它可以用来拼凑立体声信号

这是一个有两个独立振荡器的例子

const audioContext = new AudioContext();

const leftOscillator = audioContext.createOscillator();
const leftGain = audioContext.createGain();
const rightOscillator = audioContext.createOscillator();
const rightGain = audioContext.createGain();
const merger = audioContext.createChannelMerger(2);

leftOscillator.connect(leftGain).connect(merger, 0, 0);
rightOscillator.connect(rightGain).connect(merger, 0, 1);

merger.connect(audioContext.destination);

leftOscillator.frequency.value = 800;
leftGain.gain.value = 0.5;
leftOscillator.start(0);

rightOscillator.frequency.value = 1400;
rightGain.gain.value = 0.8;
rightOscillator.start(0);

嘿非常感谢你的回答!这正是我要找的。我有一个问题,
leftGain.gain.value=0.5做什么?再次感谢!我很高兴这有帮助。我添加了两个
gainnode
。每个通道一个,用于独立调平每个通道的信号
0.5
只是一个任意数字。好的,谢谢!这就是我所需要的^^