问题描述
我想通过一个信号源控制另一个信号源的增益,以根据信号源一的取反包络在信号源2上创建增益自动化。
这是我的逻辑:
playerOne.connect(follower)
follower.connect(signal)
signal.connect(negate)
negate.connect(gainTwo.gain)
其中gainTwo
是连接到playerTwo
的增益节点。这是一个codepen示例:https://codepen.io/adam_fr/pen/BazVEwe
预期的结果是,每次gainTwo.gain
触发时,playerOne
都会回避,但是我得到的却是相反的,第二个源仅在第一个源播放时播放。
解决方法
我已经弄清楚了:需要反转跟随器信号并将其上推1,这是信号可以达到的最大值。上面的代码笔用正确的接线更新了:
// Flip the values and shift them up by the max value of the sidechain signal
const negate = new Tone.Multiply(-sideChainRatio)
const shift = new Tone.Add(1)
playerOne.connect(gainOne)
playerTwo.connect(gainTwo)
playerOne.connect(follower)
follower.connect(signal)
signal.connect(negate)
negate.connect(shift)
shift.connect(gainTwo.gain)