Labor 01: Audio Interface Messtechnik
1. Überblick
Dieses Labor behandelte die systematische Charakterisierung von Audio-Interfaces durch präzise Messungen von Dynamikbereich, Klirrfaktor, und Frequenzgängen. Gemessen wurden drei verschiedene Geräte: RME Fireface UC, Mackie CR-1604 (Kanal 1 und 2).
2. Versuchsaufbau
2.1. Hardware-Konfiguration
- Audio-Interface: RME Fireface UC (192 kHz Sampling-Rate)
- Testobjekte: RME Fireface UC, Mackie CR-1604 Mischpult
- Messschleife: Audio-Ausgang → Testobjekt → Audio-Eingang
- Latenz: Niedrige Latenz-Einstellung für Echtzeit-Monitoring
2.2. Software-Umgebung
- PyFar: Hauptbibliothek für Audio-Signalverarbeitung
- SoundDevice: Hardware-Interface für Aufnahme/Wiedergabe
- Waveform Analysis: Spezialisierte Funktionen (A-Bewertung)
3. Experiment 1: Maximalpegel und Rauschpegel
3.1. Messmethodik
Grundprinzip: Bestimmung der nutzbaren Aussteuerungsgrenzen von Audio-Geräten
Testsignal:
f_0 = 1000 # Hz
level = -np.inf # dBFS (für Rauschpegelmessung)
duration = 0.5 # s
sine = pf.signals.sine(frequency=f_0, amplitude=10**(level/20),
n_samples=duration*fs, sampling_rate=fs)
Signalverarbeitungsfunktionen:
- RMS-Berechnung:
np.sqrt(np.mean(x**2, axis=-1))
- Peak-Erkennung:
np.max(np.abs(x), axis=-1)
- A-Bewertung: Frequenzabhängige Gewichtung für psychoakustische Relevanz
- dBFS-Konversion:
20 * np.log10(np.abs(x))
3.2. Praktische Durchführung
- Signalerzeugung: Präzise Amplitude entsprechend dBFS-Wert
- Aufnahme:
sd.playrec()
mit konfigurierten Ein-/Ausgängen - Fensterung: Entfernung systemischer Latenz durch zeitliche Beschneidung
- Auswertung: Automatisierte Berechnung aller Kennwerte
4. Experiment 2: Betriebskurven (Operating Curves)
4.1. Konzept
Ziel: Charakterisierung des Ein-/Ausgangsverhaltens über den gesamten Aussteuerungsbereich
Messverfahren:
- Systematische Variation des Eingangspegels (-60 bis 0 dBFS)
- Messung des resultierenden Ausgangspegels in dBu
- Bestimmung des linearen Arbeitsbereichs
4.2. Klirrfaktormessungen
THD_R (Referenz: Gesamtsignal):
freq_harm = np.arange(2 * f_0, fs/2, f_0) # Harmonische
ind_harm = x.find_nearest_frequency(freq_harm)
amp_harm = np.abs(x.freq[:, ind_harm])
thd_r = np.sqrt(np.sum(amp_harm**2, axis=-1)) / rms_amp
THD+N (Total Harmonic Distortion + Noise):
x_filtered = pf.dsp.filter.notch(x, f_0, Q=5) # Grundton entfernen
thd_n = pf.dsp.rms(x_filtered_han) / pf.dsp.rms(x_han)
4.3. Ergebnisse
- RME Fireface UC: Linearer Bereich bis ca. -3 dBFS, sehr niedrige Verzerrungen
- Mackie CR-1604: Frühere Sättigung, höhere Grundverzerrungen
- Unterschiede zwischen Kanälen: Fertigungstoleranzen sichtbar
5. Experiment 3: Frequenzgang-Messung
5.1. Sweep-basierte Messung
Anregungssignal: Exponential-Sweep
- Kontinuierliche Frequenzvariation von 10 Hz bis 22 kHz
- Gleichmäßige Energieverteilung über Frequenzbereich
- Optimale Signal-Rausch-Verhältnis
Systemidentifikation:
sweep = pf.signals.exponential_sweep_time(...)
recording = sd.playrec(sweep, ...)
impulse_response = pf.dsp.deconvolve(recording, sweep)
5.2. Datenverarbeitung
Normierung: Alle Spektren auf 1 kHz bei 0 dB normiert
one_khz_index = np.argmin(np.abs(frequencies - 1000))
offset = 20 * np.log10(np.abs(signal_freq[one_khz_index]))
ir_data.freq = signal_freq / (10**(offset/20))
Darstellung:
- Logarithmische Frequenzachse (50 Hz - 20 kHz)
- Pegelbereich: -3 dB bis +1 dB für Detailanalyse
- Vergleichende Darstellung aller Geräte
6. Wichtige Konzepte
6.1. Messtechnik
- Kalibrierung: dBu-Offset-Korrektur für absolute Pegelmessungen
- Windowing: Hann-Fenster zur Leckage-Reduktion
- Multi-Level-Messungen: Automatisierte Pegelvariation
6.2. Systemcharakterisierung
- Linearer Bereich: Konstante Verstärkung ohne Verzerrungen
- Sättigungsverhalten: Soft-/Hard-Clipping-Unterscheidung
- Rauschboden: Systemgrenzen bei niedrigen Pegeln
6.3. Audio-Standards
- dBFS: Digitale Vollaussteuerung als Referenz
- dBu: Analoge Spannungsreferenz (0.775 V RMS)
- A-Bewertung: Psychoakustische Gewichtung für Rauschbewertung
7. Praktische Erkenntnisse
7.1. Geräteunterschiede
- RME Fireface UC: Professionelle Qualität, hoher Dynamikbereich
- Mackie CR-1604: Prosumer-Bereich, frühere Verzerrungen
- Kanalvariationen: Importance of individual channel testing
7.2. Messtechnische Besonderheiten
- Latenz-Kompensation: Wichtig für korrekter Impulsevent-Start
- Frequenzbereich: Berücksichtigung der Nyqvist-Grenze
- Signal-Conditioning: Appropriate input/output level setting
8. Programmier-Techniken
8.1. PyFar-Spezifika
# Signal creation with specific parameters
signal = pf.Signal(data, sampling_rate, domain='time')
# Multi-channel processing without loops
rms_values = np.sqrt(np.mean(signal.time**2, axis=-1))
# Frequency domain operations
spectrum = signal.freq # Automatic FFT computation
8.2. Effizienz-Optimierungen
- Vectorization: Batch-processing multiple levels
- In-place operations: Memory-efficient signal modifications
- Caching: Reuse computed spectra for multiple analyses
Dieses Labor vermittelte fundamentale Kenntnisse der elektroakustischen Messtechnik und deren praktische Anwendung in der Gerätecharakterisierung.