88Alternatively you can use scipy.signal.butter, which should yield the same results.
99"""
1010
11+
1112def _precompute (frequency : int , samplerate : int , q_factor : float ):
1213 """Helper to compute common values for filter design."""
1314 w0 = tau * frequency / samplerate
@@ -17,7 +18,9 @@ def _precompute(frequency: int, samplerate: int, q_factor: float):
1718 return _sin , _cos , alpha
1819
1920
20- def make_lowpass (frequency : int , samplerate : int , q_factor : float = 1 / sqrt (2 )) -> IIRFilter :
21+ def make_lowpass (
22+ frequency : int , samplerate : int , q_factor : float = 1 / sqrt (2 )
23+ ) -> IIRFilter :
2124 """Creates a low-pass filter."""
2225 _sin , _cos , alpha = _precompute (frequency , samplerate , q_factor )
2326
@@ -32,7 +35,9 @@ def make_lowpass(frequency: int, samplerate: int, q_factor: float = 1 / sqrt(2))
3235 return filt
3336
3437
35- def make_highpass (frequency : int , samplerate : int , q_factor : float = 1 / sqrt (2 )) -> IIRFilter :
38+ def make_highpass (
39+ frequency : int , samplerate : int , q_factor : float = 1 / sqrt (2 )
40+ ) -> IIRFilter :
3641 """Creates a high-pass filter."""
3742 _sin , _cos , alpha = _precompute (frequency , samplerate , q_factor )
3843
@@ -47,7 +52,9 @@ def make_highpass(frequency: int, samplerate: int, q_factor: float = 1 / sqrt(2)
4752 return filt
4853
4954
50- def make_bandpass (frequency : int , samplerate : int , q_factor : float = 1 / sqrt (2 )) -> IIRFilter :
55+ def make_bandpass (
56+ frequency : int , samplerate : int , q_factor : float = 1 / sqrt (2 )
57+ ) -> IIRFilter :
5158 """Creates a band-pass filter."""
5259 _sin , _cos , alpha = _precompute (frequency , samplerate , q_factor )
5360
@@ -63,7 +70,9 @@ def make_bandpass(frequency: int, samplerate: int, q_factor: float = 1 / sqrt(2)
6370 return filt
6471
6572
66- def make_allpass (frequency : int , samplerate : int , q_factor : float = 1 / sqrt (2 )) -> IIRFilter :
73+ def make_allpass (
74+ frequency : int , samplerate : int , q_factor : float = 1 / sqrt (2 )
75+ ) -> IIRFilter :
6776 """Creates an all-pass filter."""
6877 _sin , _cos , alpha = _precompute (frequency , samplerate , q_factor )
6978
@@ -76,7 +85,9 @@ def make_allpass(frequency: int, samplerate: int, q_factor: float = 1 / sqrt(2))
7685 return filt
7786
7887
79- def make_peak (frequency : int , samplerate : int , gain_db : float , q_factor : float = 1 / sqrt (2 )) -> IIRFilter :
88+ def make_peak (
89+ frequency : int , samplerate : int , gain_db : float , q_factor : float = 1 / sqrt (2 )
90+ ) -> IIRFilter :
8091 """Creates a peak filter."""
8192 _sin , _cos , alpha = _precompute (frequency , samplerate , q_factor )
8293 big_a = 10 ** (gain_db / 40 )
@@ -93,7 +104,9 @@ def make_peak(frequency: int, samplerate: int, gain_db: float, q_factor: float =
93104 return filt
94105
95106
96- def make_lowshelf (frequency : int , samplerate : int , gain_db : float , q_factor : float = 1 / sqrt (2 )) -> IIRFilter :
107+ def make_lowshelf (
108+ frequency : int , samplerate : int , gain_db : float , q_factor : float = 1 / sqrt (2 )
109+ ) -> IIRFilter :
97110 """Creates a low-shelf filter."""
98111 _sin , _cos , alpha = _precompute (frequency , samplerate , q_factor )
99112 big_a = 10 ** (gain_db / 40 )
@@ -116,7 +129,9 @@ def make_lowshelf(frequency: int, samplerate: int, gain_db: float, q_factor: flo
116129 return filt
117130
118131
119- def make_highshelf (frequency : int , samplerate : int , gain_db : float , q_factor : float = 1 / sqrt (2 )) -> IIRFilter :
132+ def make_highshelf (
133+ frequency : int , samplerate : int , gain_db : float , q_factor : float = 1 / sqrt (2 )
134+ ) -> IIRFilter :
120135 """Creates a high-shelf filter."""
121136 _sin , _cos , alpha = _precompute (frequency , samplerate , q_factor )
122137 big_a = 10 ** (gain_db / 40 )
0 commit comments