【问题标题】:Tone.js - How do you make a LFO object the control input for a Volume Object that is part of an oscillator chain?Tone.js - 如何使 LFO 对象成为作为振荡器链一部分的音量对象的控制输入?
【发布时间】:2021-04-23 02:16:37
【问题描述】:

我希望 LFO 对象成为振荡器馈入的 Volume 对象的控制输入(通过每个振荡器的声像器和一个滤波器对象)。这是我正在创建的 4 个振荡器之一的初始化示例...

const oscillator = new Tone.OmniOscillator();
const volume = new Tone.Volume();
oscillator.chain(new Tone.Panner(-0.8), new Tone.Filter(1200, 'lowpass'), vol , Tone.Destination);
lfo.connect(volume);

振荡器工作正常,平移和过滤对象也是如此。但是,我在 UI 中显示了 LFO 的频率、最小值和最大值,但是更改这些值似乎根本不会影响噪音?这是我在输入到输出形式中的设置 -

OCS1 OSC2 OSC3 OSC4 (all with panners)
feeding into 
FILTER
feeding into 
VOLUME <- LFO
feeding into 
DESTINATION/OUTPUT

我错过了什么吗?我尝试更改将 LFO 附加到音量对象并使其在振荡器链之前和之后的顺序,但无济于事。此外,当我打开振荡器时,原来我使用的是 LFO.start 和 LFO.stop,但这似乎是 LFO 信号直接到音频通道,这是不对的(虽然我真的不明白我怎么能使用 LFO 而不打开它!!)。

非常感谢任何帮助。

【问题讨论】:

    标签: reactjs next.js tone.js


    【解决方案1】:

    LFO 需要连接到卷的 volume 属性。

    oscillator = new Tone.Oscillator(220, "sine");
    var filter = new Tone.Filter(1200, "lowpass");
    var vol = new Tone.Volume();
    
    // Example of LFO for lowpass filter.
    var lfo = new Tone.LFO(4, 200, 1200); // hertz, min, max
    lfo.connect(filter.frequency);
    lfo.start();
    
    // Example of LFO for volume.
    var lfo2 = new Tone.LFO(0.1, -100, 0); // hertz, min, max
    lfo2.connect(vol.volume);
    lfo2.start();
    
    
    oscillator.chain(filter, vol);
    oscillator.start();
    vol.toDestination();
    

    这是一个有效的 CodePen:https://codepen.io/joeweiss/pen/JjWvdmL?editors=0011

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      • 2019-10-24
      • 2021-04-11
      • 2017-10-23
      • 2021-02-17
      • 1970-01-01
      相关资源
      最近更新 更多