无法使用 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();
我已经开始使用名为 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
上调用 - 您正在通过
split.left = leftEar;
删除 Merge 生成的 GainNode
- 您正在将两个振荡器连接到两个通道,您应该通过执行
leftEar.connect(split.left)
将它们连接到各自的通道
.toMaster()
进行这些更改后,您的代码将如下所示:
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();