Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript web音频api:乘波_Javascript_Web Audio Api - Fatal编程技术网

Javascript web音频api:乘波

Javascript web音频api:乘波,javascript,web-audio-api,Javascript,Web Audio Api,Web Audio API允许我在指定的频率信号中创建一个恒定的正弦波,如下所示: var actx = new AudioContext(); var osc = actx.createOscillator(); osc.frequency.value = 500; osc.connect(actx.destination); osc.start(); 我如何将这个波乘以另一个波来“塑造”它。例如,我如何将它乘以另一个200赫兹的正弦波 像这样: 试试类似的方法 var osc1 = co

Web Audio API允许我在指定的频率信号中创建一个恒定的正弦波,如下所示:

var actx = new AudioContext();
var osc = actx.createOscillator();

osc.frequency.value = 500;
osc.connect(actx.destination);
osc.start();
我如何将这个波乘以另一个波来“塑造”它。例如,我如何将它乘以另一个200赫兹的正弦波

像这样:

试试类似的方法

var osc1 = context.createOscillator();
var osc2 = context.createOscillator();
var gain = context.createGain();

osc1.frequency.value = 500;
osc2.frequency.value = 20;

osc1.connect(gain);
osc2.connect(gain.gain);

gain.connect(context.destination);

osc1.start();
osc2.start();

你的代码很好用。因此,增益被视为一个乘数。我不知道还可以将信号连接到gain.gain属性。当然,gain是一个乘法器。:-)有趣的是,增益不是常数,可以来自其他信号源。这在规范中没有很好的解释,但是请参见
AudioNode.connect()
有两种风格:
AudioNode.connect(AudioNode)
AudioNode.connect(AudioParam)
。第一个可用于将AudioNode的输出连接到另一个AudioNode的输入,第二个可用于将AudioNode的输出连接到AudioParam。这就是为什么您可以在Raymond提供的代码片段中执行
osc2.connect(gain.gain)
。是否可以将两个以上的波相乘?我想在振幅调制中衰减。在上面的示例答案中,我希望osc2振幅(调制深度)在10秒内从0变为1。如何做到这一点?番茄酱665??这与最初的问题有关,即如何处理多个波(而不是仅对一个波应用波形增益)。现在在这里添加这个澄清似乎比开始另一个完整的问题要好。谢谢。是的,可以乘两个以上的波。如果你想做ab,你需要一个增益节点。如果你想做abc,你需要2个增益节点。一个乘以ab(如上所示),然后一个乘以(a*b)*c。