无法使用 Tone.js 将音频拆分为单独的频道

Can't Split Audio Into Separate Channels with Tone.js

我已经开始使用名为 Tone.js 的库创建一个应用程序,它允许我以各种方式在 Web 上操作音频。

目前我想为耳机用户创建两个声道(左声道和右声道)并在每只耳朵中播放一个不同的频率(例如,左声道 400Hz,右声道 500Hz)

使用我当前的代码,我有两个频率在每只耳朵中播放。有人对我如何将它们分开有什么建议吗?

到目前为止,这是我的代码:

//create a synth and connect it to the master output (your speakers)

//Connect each separate tone to split
var split = new Tone.Split();
var leftEar = new Tone.Oscillator().toMaster();
var rightEar = new Tone.Oscillator().toMaster();

leftEar.frequency.value = 400;
rightEar.frequency.value = 500;

split.left = leftEar;
split.right = rightEar;

leftEar.connect(split);
rightEar.connect(split);

leftEar.start();
rightEar.start();

//Frequency is equivalent to difference between frequency in left and right ear
var frequency = {
  "Gamma" : [30, 50],
  "Beta" : [14, 30],
  "Alpha" : [8, 14],
  "Theta" : [4, 8],
  "Delta" : [0.1, 4]
};

谢谢!

参考:https://tonejs.github.io/docs/#Split and https://github.com/Tonejs/Tone.js/wiki/Signals

  • 您想使用 Merge,而不是拆分
  • 您正在将左右振荡器直接发送到主输出,您应该只在 split
  • 上调用 .toMaster()
  • 您正在通过 split.left = leftEar;
  • 删除 Merge 生成的 GainNode
  • 您正在将两个振荡器连接到两个通道,您应该通过执行 leftEar.connect(split.left)
  • 将它们连接到各自的通道

进行这些更改后,您的代码将如下所示:

var split = new Tone.Merge().toMaster();
var leftEar = new Tone.Oscillator();
var rightEar = new Tone.Oscillator();

leftEar.frequency.value = 400;
rightEar.frequency.value = 500;

leftEar.connect(split.left);
rightEar.connect(split.right);

leftEar.start();
rightEar.start();