如何防止在笔记末尾单击?
How can I prevent a click at the end of a note?
我编写了以下代码来使用波状低通滤波器播放音符:
var ac = new AudioContext;
var master = ac.createGain();
master.connect(ac.destination);
master.gain.value = 0.7;
var filter = ac.createBiquadFilter();
filter.connect(master);
filter.type = 'lowpass';
filter.Q.value = 2;
var osc = ac.createOscillator();
osc.connect(filter);
osc.type = 'square';
osc.frequency.value = 55;
var now = ac.currentTime;
osc.start(now);
//osc.stop(now+0.2);
filter.frequency.setValueAtTime(0, now);
filter.frequency.linearRampToValueAtTime(440, now+0.02);
filter.frequency.linearRampToValueAtTime(0, now+0.12);
音符听起来和预期的一样(过滤器打开很快,然后完全关闭的速度稍微慢一点)但在它的最后我能听到咔嗒声。音符越低,咔嗒声越大。
我已经尝试取消对注释行的注释,以及向母版添加轮廓,但没有任何效果。
编辑: "adding contour to the master" 我的意思是我尝试将主增益降低到 0 正好 同时过滤器达到 0。这不起作用。
如何防止在笔记末尾点击?
描述 "adding a contour to the master" 的意思。
在你的例子中,我会在滤波器频率变为 0 之前将主增益降低到零。
虽然从直觉上讲,将滤波器降低到零应该会切断所有信号,但滤波器不会 "cut off" 所有高于指定频率的信号。因此,即使使用您创建的过滤器,您也应该期望信号中有一些能量。
但是,滤波器的截止频率与这些信号与截止频率的距离成正比。因此,完全有道理的是,你的信号越低,关闭它时的爆裂声就越大(因为较低的频率更接近你的零截止频率,因此被滤波器衰减得更少)。
您可以通过在安排信号完全停止之前立即对信号的 GAIN 执行线性斜坡来解决此问题。您可以在最后一毫秒左右降低速度以避免弹出。
我编写了以下代码来使用波状低通滤波器播放音符:
var ac = new AudioContext;
var master = ac.createGain();
master.connect(ac.destination);
master.gain.value = 0.7;
var filter = ac.createBiquadFilter();
filter.connect(master);
filter.type = 'lowpass';
filter.Q.value = 2;
var osc = ac.createOscillator();
osc.connect(filter);
osc.type = 'square';
osc.frequency.value = 55;
var now = ac.currentTime;
osc.start(now);
//osc.stop(now+0.2);
filter.frequency.setValueAtTime(0, now);
filter.frequency.linearRampToValueAtTime(440, now+0.02);
filter.frequency.linearRampToValueAtTime(0, now+0.12);
音符听起来和预期的一样(过滤器打开很快,然后完全关闭的速度稍微慢一点)但在它的最后我能听到咔嗒声。音符越低,咔嗒声越大。
我已经尝试取消对注释行的注释,以及向母版添加轮廓,但没有任何效果。
编辑: "adding contour to the master" 我的意思是我尝试将主增益降低到 0 正好 同时过滤器达到 0。这不起作用。
如何防止在笔记末尾点击?
描述 "adding a contour to the master" 的意思。
在你的例子中,我会在滤波器频率变为 0 之前将主增益降低到零。
虽然从直觉上讲,将滤波器降低到零应该会切断所有信号,但滤波器不会 "cut off" 所有高于指定频率的信号。因此,即使使用您创建的过滤器,您也应该期望信号中有一些能量。
但是,滤波器的截止频率与这些信号与截止频率的距离成正比。因此,完全有道理的是,你的信号越低,关闭它时的爆裂声就越大(因为较低的频率更接近你的零截止频率,因此被滤波器衰减得更少)。
您可以通过在安排信号完全停止之前立即对信号的 GAIN 执行线性斜坡来解决此问题。您可以在最后一毫秒左右降低速度以避免弹出。