audio_filters.butterworth_filter

Functions

_validate_frequency(→ None)

Validate arguments shared by the Butterworth filter factories.

make_allpass() → audio_filters.iir_filter.IIRFilter)

Creates an all-pass filter

make_bandpass() → audio_filters.iir_filter.IIRFilter)

Creates a band-pass filter

make_bandpass_peak() → audio_filters.iir_filter.IIRFilter)

Creates a band-pass filter with constant 0 dB peak gain.

make_highpass() → audio_filters.iir_filter.IIRFilter)

Creates a high-pass filter

make_highshelf() → audio_filters.iir_filter.IIRFilter)

Creates a high-shelf filter

make_lowpass() → audio_filters.iir_filter.IIRFilter)

Creates a low-pass filter

make_lowshelf() → audio_filters.iir_filter.IIRFilter)

Creates a low-shelf filter

make_notch() → audio_filters.iir_filter.IIRFilter)

Creates a notch (band-reject) filter that strongly attenuates a narrow band

make_peak() → audio_filters.iir_filter.IIRFilter)

Creates a peak filter

Module Contents

audio_filters.butterworth_filter._validate_frequency(frequency: int, samplerate: int, q_factor: float) None

Validate arguments shared by the Butterworth filter factories.

>>> _validate_frequency(1000, 48000, 1 / sqrt(2))
>>> _validate_frequency(0, 48000, 1 / sqrt(2))
Traceback (most recent call last):
    ...
ValueError: frequency must be a positive integer
>>> _validate_frequency(24000, 48000, 1 / sqrt(2))
Traceback (most recent call last):
    ...
ValueError: frequency must be less than half the samplerate
>>> _validate_frequency(1000, 0, 1 / sqrt(2))
Traceback (most recent call last):
    ...
ValueError: samplerate must be a positive integer
>>> _validate_frequency(1000, 48000, 0)
Traceback (most recent call last):
    ...
ValueError: q_factor must be positive
audio_filters.butterworth_filter.make_allpass(frequency: int, samplerate: int, q_factor: float = 1 / sqrt(2)) audio_filters.iir_filter.IIRFilter

Creates an all-pass filter

>>> filter = make_allpass(1000, 48000)
>>> filter.a_coeffs + filter.b_coeffs
[1.0922959556412573, -1.9828897227476208, 0.9077040443587427, 0.9077040443587427,
 -1.9828897227476208, 1.0922959556412573]
audio_filters.butterworth_filter.make_bandpass(frequency: int, samplerate: int, q_factor: float = 1 / sqrt(2)) audio_filters.iir_filter.IIRFilter

Creates a band-pass filter

>>> filter = make_bandpass(1000, 48000)
>>> filter.a_coeffs + filter.b_coeffs
[1.0922959556412573, -1.9828897227476208, 0.9077040443587427, 0.06526309611002579,
 0, -0.06526309611002579]
audio_filters.butterworth_filter.make_bandpass_peak(frequency: int, samplerate: int, q_factor: float = 1 / sqrt(2)) audio_filters.iir_filter.IIRFilter

Creates a band-pass filter with constant 0 dB peak gain.

Unlike make_bandpass(), whose skirt (edge) gain is held constant so the peak gain grows with q_factor, this variant normalises the response so the peak always reaches 0 dB regardless of the chosen q_factor. Both forms come from the RBJ Audio EQ Cookbook.

https://en.wikipedia.org/wiki/Band-pass_filter

>>> filter = make_bandpass_peak(1000, 48000)
>>> filter.a_coeffs + filter.b_coeffs
[1.0922959556412573, -1.9828897227476208, 0.9077040443587427,
 0.09229595564125725, 0, -0.09229595564125725]
audio_filters.butterworth_filter.make_highpass(frequency: int, samplerate: int, q_factor: float = 1 / sqrt(2)) audio_filters.iir_filter.IIRFilter

Creates a high-pass filter

>>> filter = make_highpass(1000, 48000)
>>> filter.a_coeffs + filter.b_coeffs
[1.0922959556412573, -1.9828897227476208, 0.9077040443587427, 0.9957224306869052,
 -1.9914448613738105, 0.9957224306869052]
audio_filters.butterworth_filter.make_highshelf(frequency: int, samplerate: int, gain_db: float, q_factor: float = 1 / sqrt(2)) audio_filters.iir_filter.IIRFilter

Creates a high-shelf filter

>>> filter = make_highshelf(1000, 48000, 6)
>>> filter.a_coeffs + filter.b_coeffs
[2.2229172136088806, -3.9587208137297303, 1.7841414181566304, 4.295432981120543,
 -7.922740859457287, 3.6756456963725253]
audio_filters.butterworth_filter.make_lowpass(frequency: int, samplerate: int, q_factor: float = 1 / sqrt(2)) audio_filters.iir_filter.IIRFilter

Creates a low-pass filter

>>> filter = make_lowpass(1000, 48000)
>>> filter.a_coeffs + filter.b_coeffs
[1.0922959556412573, -1.9828897227476208, 0.9077040443587427, 0.004277569313094809,
 0.008555138626189618, 0.004277569313094809]
audio_filters.butterworth_filter.make_lowshelf(frequency: int, samplerate: int, gain_db: float, q_factor: float = 1 / sqrt(2)) audio_filters.iir_filter.IIRFilter

Creates a low-shelf filter

>>> filter = make_lowshelf(1000, 48000, 6)
>>> filter.a_coeffs + filter.b_coeffs
[3.0409336710888786, -5.608870992220748, 2.602157875636628, 3.139954022810743,
 -5.591841778072785, 2.5201667380627257]
audio_filters.butterworth_filter.make_notch(frequency: int, samplerate: int, q_factor: float = 1 / sqrt(2)) audio_filters.iir_filter.IIRFilter

Creates a notch (band-reject) filter that strongly attenuates a narrow band of frequencies around frequency while leaving the rest of the spectrum unchanged. It is the complement of the band-pass filter and is commonly used to remove a single tone such as 50/60 Hz mains hum.

https://en.wikipedia.org/wiki/Band-stop_filter

>>> filter = make_notch(1000, 48000)
>>> filter.a_coeffs + filter.b_coeffs
[1.0922959556412573, -1.9828897227476208, 0.9077040443587427, 1.0,
 -1.9828897227476208, 1.0]
audio_filters.butterworth_filter.make_peak(frequency: int, samplerate: int, gain_db: float, q_factor: float = 1 / sqrt(2)) audio_filters.iir_filter.IIRFilter

Creates a peak filter

>>> filter = make_peak(1000, 48000, 6)
>>> filter.a_coeffs + filter.b_coeffs
[1.0653405327119334, -1.9828897227476208, 0.9346594672880666, 1.1303715025601122,
 -1.9828897227476208, 0.8696284974398878]