Files
sunflower-picture-app/libraries/ESP32-audioI2S/examples/biquad/biquad.py

44 lines
1.2 KiB
Python

import numpy as np
# import matplotlib
# matplotlib.use("TkAgg") # oder "QtAgg", falls Qt installiert ist
import matplotlib.pyplot as plt
from scipy.signal import freqz
# =========================
# PARAMETER
# =========================
fs = 44100 # Samplerate
N = 8192 # FFT-Auflösung
# Liste von Biquads (Reihenfolge = Signalfluss)
biquads = [
([1.026721, -1.919612, 0.901093], [1.0, -1.922258, 0.925168]), # LOWSHELF
([0.802626, -1.424665, 0.670208 ], [1.0, -1.424665, 0.472834 ]), # PEAKINGEQ
([2.092489, -2.262849, 0.808592], [1.0, -0.597000, 0.235232]), # HIGHSHELF
]
w = np.linspace(0, np.pi, N)
H = np.ones_like(w, dtype=complex)
for b, a in biquads:
_, h = freqz(b, a, worN=w)
H *= h
f = w * fs / (2*np.pi)
mag_db = 20 * np.log10(np.abs(H) + 1e-12)
# =========================
# PLOT
# =========================
plt.figure(figsize=(9,5))
plt.semilogx(f, mag_db)
plt.xlim(20, fs/2)
plt.ylim(-15, 15)
plt.grid(True, which='both')
plt.xlabel("Frequency (Hz)")
plt.ylabel("Amplitude (dB)")
plt.title("Biquad frequency response")
plt.tight_layout()
# plt.show()
plt.savefig("biquad_response.png", dpi=150)
print("Plot gespeichert als biquad_response.png")