用于频谱显示器的攻击释放包络跟随器
Attack Release Envelope Follower for Spectrum Displayer
我正在使用 C# 设计频谱分析仪,所有音频 input/output 进程都正常工作,但在显示频谱时,我希望谐波根据启动和释放时间衰减 in/out我已经分配的(在 BlueCat 的 FreqAnalyst 频谱分析仪中执行类似攻击和释放参数的操作)。 musicdsp.com上的post我翻了一遍,没法实现,我估计也是没看懂。任何帮助将不胜感激。
当处理频率时,缓冲区填充过程比实时采样花费更多时间,因为 FFT(快速傅立叶变换)以块为单位进行计算。
因此,如果有人想在频域中修改信号,请不要忘记考虑 FFT 大小。
musicdsp.org版本攻击和释放系数:
attack_coef = exp(log(0.01)/( attack_in_ms * samplerate * 0.001));
release_coef = exp(log(0.01)/( release_in_ms * samplerate * 0.001));
我的攻击和释放系数版本:
attack_coef = exp(log(0.01) * fftSize /( attack_in_ms * samplerate * 0.001));
release_coef = exp(log(0.01) * fftSize /( release_in_ms * samplerate * 0.001));
我正在使用 C# 设计频谱分析仪,所有音频 input/output 进程都正常工作,但在显示频谱时,我希望谐波根据启动和释放时间衰减 in/out我已经分配的(在 BlueCat 的 FreqAnalyst 频谱分析仪中执行类似攻击和释放参数的操作)。 musicdsp.com上的post我翻了一遍,没法实现,我估计也是没看懂。任何帮助将不胜感激。
当处理频率时,缓冲区填充过程比实时采样花费更多时间,因为 FFT(快速傅立叶变换)以块为单位进行计算。
因此,如果有人想在频域中修改信号,请不要忘记考虑 FFT 大小。
musicdsp.org版本攻击和释放系数:
attack_coef = exp(log(0.01)/( attack_in_ms * samplerate * 0.001));
release_coef = exp(log(0.01)/( release_in_ms * samplerate * 0.001));
我的攻击和释放系数版本:
attack_coef = exp(log(0.01) * fftSize /( attack_in_ms * samplerate * 0.001));
release_coef = exp(log(0.01) * fftSize /( release_in_ms * samplerate * 0.001));