gpt4 book ai didi

javascript - 自定义 AudioNode 自动化

转载 作者:行者123 更新时间:2023-12-03 09:11:19 28 4
gpt4 key购买 nike

我正在寻找一种方法来创建自定义 AudioNode 并能够像 native AudioNode 一样调制其 AudioParams。即 LFO.connect.(gainNode.gain)。

就我而言,我想创建一个 CrossFader 节点(A、B),并能够使用 OscillatorNode 在 A、B 之间调制其混合。

我将此作为一个功能性但不可自动化的起点:

function crossFade(val, max, inputA, inputB) {
var x = parseInt(val) / parseInt(max),
gain1 = Math.cos(x * 0.5 * Math.PI),
gain2 = Math.cos((1.0 - x) * 0.5 * Math.PI);

inputA.gain.value = gain1;
inputB.gain.value = gain2;
}

谢谢

最佳答案

我想你想要这样的东西:

function CrossFade(){
this.inputA = context.createGain();
this.inputB = context.createGain();
this.fade = function(val, max) {
var x = parseInt(val) / parseInt(max),
gain1 = Math.cos(x * 0.5 * Math.PI),
gain2 = Math.cos((1.0 - x) * 0.5 * Math.PI);

inputA.gain.value = gain1;
inputB.gain.value = gain2;
}
}

这样,当您执行 var c = new CrossFade() 操作时,您可以将轨道连接到 c.inputA 或 c.inputB。然后,您可以根据需要将调制器连接到这些增益 AudioNode(如果您想使用单个振荡器作为两个输入的调制器,您可能必须使用脚本处理器节点来反转振荡器的相位)立即)。

(请注意,您可能应该将 fade 方法放在原型(prototype)上,但为了简洁起见,我在这里使用了 this 语法。)

关于javascript - 自定义 AudioNode 自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32064955/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com