Sha256: f32a91d105eb736787a3a8b910a124699b9a33c0a384d4cf7c56027f1bf86825
Contents?: true
Size: 998 Bytes
Versions: 9
Compression:
Stored size: 998 Bytes
Contents
module SPCore # Implement a "cookbook" highpass filter using the BiquadFilter class, # based on the well-known RBJ biquad filter. class CookbookHighpassFilter < BiquadFilter def initialize sample_rate super(sample_rate) end def set_critical_freq_and_bw critical_freq, bandwidth @critical_freq = critical_freq @bandwidth = bandwidth # setup variables omega = 2.0 * Math::PI * @critical_freq / @sample_rate sn = Math::sin(omega) cs = Math::cos(omega) alpha = sn * Math::sinh(BiquadFilter::LN_2 / 2.0 * @bandwidth * omega / sn) b0 = (1.0 + cs) / 2.0 b1 =-(1.0 + cs) b2 = (1.0 + cs) / 2.0 a0 = 1.0 + alpha a1 = -2.0 * cs a2 = 1.0 - alpha # precompute the coefficients @biquad.b0 = b0 / a0 @biquad.b1 = b1 / a0 @biquad.b2 = b2 / a0 @biquad.a0 = a0 / a0 @biquad.a1 = a1 / a0 @biquad.a2 = a2 / a0 ## zero initial samples #@biquad.x1 = @biquad.x2 = 0 #@biquad.y1 = @biquad.y2 = 0 end end end
Version data entries
9 entries across 9 versions & 1 rubygems