【问题标题】:Can't Split Audio Into Separate Channels with Tone.js无法使用 Tone.js 将音频拆分为单独的通道
【发布时间】:2016-09-12 23:56:13
【问题描述】:

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

目前我想为耳机用户创建两个声道(左声道和右声道),并在每只耳朵中播放一个不同的频率(例如,左声道 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/#Splithttps://github.com/Tonejs/Tone.js/wiki/Signals

【问题讨论】:

    标签: javascript audio frequency


    【解决方案1】:
    • 你想使用Merge,而不是Split
    • 您将左右振荡器直接发送到主输出,您应该只在split 上调用.toMaster()
    • 您正在删除 Merge 通过执行 split.left = leftEar; 生成的 GainNodes
    • 您正在将两个振荡器连接到两个通道,您应该通过 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();
    

    【讨论】:

      猜你喜欢
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      • 1970-01-01
      • 2019-08-17
      相关资源
      最近更新 更多