Sonir/Funktionen & der Rechenweg

Was wir messen, und wie.

FEATURES & MATH

Wir stellen genau die Diagramme nebeneinander, die auf Sonirs Messbildschirmen erscheinen, und erklären was jedes davon misst und wie es berechnet wird. Wir haben die maßgeblichen Formeln und die Rechenverfahren so weit offengelegt, wie wir sie veröffentlichen können. Es nicht zur Blackbox zu machen, schafft unserer Überzeugung nach Vertrauen in ein Messwerkzeug.

A

Messung

MEASURE

Grundlegende Messungen, die du sofort mit dem eingebauten Mikrofon ausführen kannst. All das ist kostenlos zugänglich.

72.3 dB SPL · A · FAST

measure › SPL — die 270°-Bogenanzeige in viz/spl_arc.dart

SPL (Schalldruckpegel)

Free
Zeigt die Lautstärke in dB. Die Bewertung unterstützt A / C / Z (flach), und die Zeitbewertung unterstützt Fast (125 ms) / Slow (1 s) / Impulse (35 ms). Sie zeigt zugleich Leq, Peak und Minimum an. Vor der Kalibrierung liest sie in dBFS; lade eine Kalibrierungsdatei, und sie wird zu dB SPL hochgestuft.
Rechenweg öffnen
Lp Lp = 20·log10(p/p0),   p0 = 20 µPa
Verfahren: bilde den RMS (Effektivwert) der Eingangswellenform über ein Zeitfenster und wandle ihn dann mit der obigen Formel in dB um. Die A/C/Z-Bewertung ist als Biquad-Kaskade umgesetzt, die durch bilineare Transformation der analogen Pole von IEC 61672-1 gewonnen wird (spl.rs). Die Zeitbewertung wird durch die Zeitkonstanten (Fast/Slow/Impulse) eines exponentiellen gleitenden Mittelwerts geglättet. Die Umrechnung in dB SPL ist nur das Addieren des Kalibrier-Offsets offset_db — um auf unkalibrierten Geräten übertriebene Absolutwerte zu vermeiden, bleibt sie bis zur Kalibrierung in dBFS.
201001k10k20k

measure › RTA — viz/fft_bars.dart (1/12-Okt-Bins)

RTA / FFT-Spektrum

Free
Zeigt die Energie je Frequenz in Echtzeit. Die Fensterfunktionen sind Hann (Standard) / Hamming / Blackman, und die Bandauflösung wechselt zwischen 1/3, 1/6 und 1/12 Oktave. Tiefen werden mit der Akzentfarbe eingefärbt und Höhen sind dunkler, um die Lesbarkeit zu verbessern.
Rechenweg öffnen
X(k) X(k) = Σn=0N−1 w(n)·x(n)·e−j2πkn/N    20·log10|X(k)|
Verfahren: wende das Fenster w(n) auf den Eingangsblock (in Echtzeit 1024–4096 Punkte) an und nimm eine reelle FFT (realfft). Wandle den Betrag jedes Bins in dB um und fasse die Energie für die Balkendarstellung in Bruchteil-Oktav-Bänder zusammen. Das Fenster ist ein Kompromiss zwischen Auflösung (schmale Hauptkeule) und Leckage (niedrige Nebenkeulen) — das Standard-Hann gleicht beide aus. Die IR-Analyse nutzt lange FFTs von 65536 Punkten oder mehr.
0-20-40-60 Direktschall
0ms150300450ms

measure › FR — ETC (Energie-Zeit-Kurve). Vertikale Linie = Direktschall, der Rest sind Reflexionen und Nachhall

Sweep → Impulsantwort → Raumakustik

Free
Spiele und nimm einen logarithmischen Sweep auf (Farina ESS), und gewinne dann die Impulsantwort (IR) des Raums durch Inversfilter-Faltung. Daraus berechnen wir RT60 / EDT / C50 / D50 / Frequenzgang / ETC alle auf einmal. Die Breitband-Analyse über das volle Band (Standard 20 Hz–20 kHz) ist kostenlos.
Rechenweg öffnen
ESS x(t) = sin( 2π·f1·T/ln R · [ Rt/T − 1 ] ),   R = f2/f1
Schroeder L(t) = 10·log10( ∫t h2(τ) dτ  /  ∫0 h2(τ) dτ )
C50 C50 = 10·log10( ∫050ms h2 dt  /  ∫50ms h2 dt )    D50 = ∫050ms h2 dt /0 h2 dt
Gewinnung der IR: erzeuge einen logarithmischen Sweep nach der Farina-Methode → synchronisiere Wiedergabe und Aufnahme → korrigiere die Latenz per FFT-Kreuzkorrelation der Aufnahme und des Referenz-Chirps → falte den Inversfilter (Zeitumkehr + Amplitudenkorrektur), um die IR zu extrahieren (ir.rs). Das Diagramm oben ist die ETC (Energie-Zeit-Kurve) dieser IR und zeigt die Zeitstruktur von Direktschall, Reflexionen und Nachhall.
RT60: integriere die quadrierte IR rückwärts zu einer Schroeder-Abklingkurve, schneide den Rauschschwanz ab und passe eine Gerade an. Extrapoliere die Steigung von −5 dB bis −35 dB (T30) oder −5 bis −25 dB (T20) auf 60 dB. EDT ist die Steigung von 0 bis −10 dB × 6.
C50 / D50: nimm das Energieverhältnis um 50 ms (vom Peak aus, innerhalb des Abschnitts) für Klarheit / Definition. Bänder mit unzureichendem SNR oder Regressions-r² werden mit einer Vertrauenswarnung markiert.
0 t↓
201001k10k20k

measure › FR — CSD-Heatmap (X = Frequenz / Y = Zeit ↓ / Farbe = dB)

Wasserfall (CSD) / ETC

Free
Schneide dieselbe IR entlang der Zeit, um zu zeigen, „welcher Frequenzen Nachhall verbleibt und wie lange“ (kumulatives Spektralabklingen / CSD). Horizontale Achse = Frequenz, vertikale Achse = Zeit (0 oben, nach unten fortschreitend), Farbe = Energie (dB). Tieffrequente Moden und kastiges Klingeln zeigen sich auf einen Blick.
Rechenweg öffnen
CSD S(f, tk) = | FFT[ h(τ)·w(τ − tk) ] |  ,  tk = k·Δt
Verfahren: verschiebe ein Zeitfenster w schrittweise rückwärts über die IR und FFT jedes Mal (Kurzzeit-FFT). Stapele das Spektrum jedes Augenblicks in die Tiefe, um es zu rendern. Je weiter das Fenster fortschreitet, desto mehr verschwinden die schnell abklingenden Komponenten, sodass nur die verbleibenden Bänder (stehende Wellen, Kastenklingeln) in die Ferne nachziehen. ETC ist die IR-Hüllkurve |h(t)| in dB dargestellt und dient dazu, die Ankunftszeiten früher Reflexionen abzulesen.
B

Aufnahme und Vergleich

RECORD & COMPARE

Sonirs Kern: Aufnahmen auf „gleiche Bedingungen“ ausrichten und vergleichen.

201001k10k20k
Rec A · Eingebautes Mikrofon Rec B · UMIK-2 kalibriert

compare — zwei Frequenzgänge überlagert an einer 0-dB-Referenz

Vergleich + überlagerte Spektren

Pro
Pegelangleichung zweier Aufnahmen, sofortiges Umschalten und Überlagern der Spektren, um den Unterschied sichtbar zu machen. Entscheidend ist, die größte Täuschung — einen Pegelunterschied — vor dem Vergleich zu beseitigen. Gleiche die Metadaten von Geräteprofil, Raum-Tags und Kalibrierungsdatei an, damit du sie auch später unter „gleichen Bedingungen“ nebeneinanderstellen kannst.
Rechenweg öffnen
level g = RMSref / RMSx    x′(n) = g·x(n)
Verfahren: finde den Verstärkungsfaktor g, der den RMS jeder Aufnahme an die Referenz angleicht, und richte sie aus (so wird die Lautheits-Täuschung beseitigt, bei der „das Lautere besser klingt“). Das Umschalten blendet mit einer Gleichleistungs-Rampe über, um abrupte Klicks zu vermeiden. Die Spektren werden auf denselben 1/12-Okt-Bins überlagert, wobei A in Blau und B in Orange dargestellt wird, um den Unterschied aufzuzeigen.
87 OVERALL
Clipping 98
Rauschteppich 86
Dynamikumfang 74
Freq.-Balance 90

record › score — ScoreRing (kreisförmiger Ring) + die Aufschlüsselung der 4 Achsen

Aufnahme-Score

Free
Bewerte eine einzelne Aufnahme über vier Achsen — Clipping, Rauschteppich, Dynamikumfang und Frequenzbalance — und fasse sie zu einem Score von 0–100 zusammen. Erzeuge eine Vergleichskarte, die du direkt in sozialen Netzwerken posten kannst. Die Schwellenwerte jeder Achse sind öffentlich, und die Gewichte sind in den Einstellungen anpassbar.
Rechenweg öffnen
score Score = Σi wi·si,   si = clamp( jede Achse linear auf 0–100 abbilden )
Definitionen der 4 Achsen (score.rs, Schwellenwerte anpassbar):
  • Clipping: Anteil der bei 0 dBFS festsitzenden Samples. 100 bei 0 %, 0 bei 1 %.
  • Rauschteppich: A-bewerteter RMS stiller Abschnitte. 100 bei −70 dBFS, 0 bei −30 dBFS.
  • Dynamikumfang: Methode der DR-Datenbank (Peak − RMS der obersten 20 %). 100 bei 14 dB, 0 bei 4 dB.
  • Frequenzbalance: RMS-Abweichung von einer linearen Anpassung der 1/3-Okt-Bänder. 100 bei 3 dB, 0 bei 12 dB (die Neigung des Genres wird von der Anpassung aufgefangen).
Die Gewichte wi sind standardmäßig gleich (0,25 × 4) und können auf der Einstellungsseite geändert werden.
0-30-60-90-120
Effektive BW 38 kHz
201001k10k40k

inspect — Max-Hold-Spektrum + Marker für effektive Bandbreite

Dateiprüfung (Erkennung von Pseudo-Hi-Res / verlustbehaftet)

Free
Analysiert eine Audiodatei für sich allein (unabhängig von Mikrofon, Raum oder Lautsprecher). Der Kern ist ein „Widerspruch zwischen der Deklaration (Container-Abtastrate) und der Realität (dem Abschneiden des PCM-Spektrums)“. Fällt die effektive Bandbreite deutlich unter die deklarierte Nyquist-Frequenz, wird Pseudo-Hi-Res vermutet; gibt es eine steile Wand bei einer Standard-fs, wird ein verlustbehafteter Ursprung vermutet.
Rechenweg öffnen
bandwidth feff = max f  s.t.  Smaxhold(f) ≥ Speak − 60dB
Verfahren (inspect.rs): nativer Code dekodiert die Datei in ein temporäres WAV mit nativer fs, und Rust führt einen Streaming-Lesevorgang aus (ohne großes PCM auf die Grenze zu laden). Baue ein Max-Hold-Spektrum, das das Maximum jedes Bins mit einem Hann-Fenster bei 50 % Überlappung nimmt (damit momentane Höhen von Becken und dergleichen nicht durch Mittelung zerdrückt werden). Behandle −60 dB vom Peak als den „Boden“ und setze die höchste ihn überschreitende Frequenz als die effektive Bandbreite feff.
  • Pseudo-Hi-Res: über 48k deklariert, aber feff endet im CD-Band (~26 kHz) → Hochkonvertierung vermutet.
  • Verlustbehafteter Ursprung: hohes feff/Nyquist-Verhältnis mit einer steilen ≥48 dB/Okt-Brickwall bei 16–20 kHz.
Die Schwellenwerte sind vorläufig und werden gegen Samples von echten Geräten kalibriert.
C

Feinschliff und Export

FINISH & EXPORT

Wende das Gemessene auf deine Umgebung an und teile es.

+60-6
2050100200300Hz
Gemessen Ziel Korrigiert

measure › FR/EQ — gemessen vs. Ziel + die korrigierte Kurve

Room EQ / Auto-PEQ

Pro
Überlagere eine kalibrierte Messung mit einer Zielkurve und lass automatisch einen parametrischen EQ vorschlagen, der den Unterschied minimiert. Das Hauptschlachtfeld ist der Bassbereich, in dem Moden außer Kontrolle geraten (Standard 20–300 Hz). Messung und PEQ-Vorschau sind kostenlos; der Export im REW / EqualizerAPO-Format ist Pro. Ein Hard-Gate verlangt eine kalibrierte Messung.
Rechenweg öffnen
error error(f) = measured(f) − target(f)    min Σ |error(f)|2
peaking H(s) = ( s2 + s·(A/Q)·ω0 + ω02 ) / ( s2 + s·(1/(A·Q))·ω0 + ω02 )
Verfahren (roomeq.rs): eine Greedy-Methode (Matching Pursuit), die nacheinander einen Peaking-Biquad dort platziert, wo der Restfehler error(f) am größten ist. Die Biquad-Koeffizienten setzen den Peaking-EQ des RBJ Audio EQ Cookbook direkt um. Sie bevorzugt Absenkungen gegenüber Anhebungen, begrenzt die maximale Anhebung und Absenkung getrennt, um Headroom zu schützen, und berechnet automatisch einen negativen Vorverstärker, um die überschüssige Anhebung auszugleichen. Die Korrektur ist auf den modalen Bereich unterhalb der Schroeder-Frequenz beschränkt. Die grüne Kurve im Diagramm oben ist die vorhergesagte Kurve nach der Korrektur.

Zur Transparenz

Die hier gezeigten Formeln und Verfahren entsprechen der tatsächlichen Implementierung des DSP-Kerns der App (Rust). Einige Schwellenwerte sind vorläufige Werte, die gegen Samples von echten Geräten kalibriert werden, und werden nach der Finalisierung aktualisiert. Die Messung erfolgt vollständig auf dem Gerät, ohne einen Server zu durchlaufen; Aufnahmen, IRs und Kalibrierungsdateien werden niemals nach außen gesendet.

CLOSING

Bereit, wann immer du es bist.

Der Start ist in Vorbereitung. Bring Reproduzierbarkeit von deiner allerersten Messung an mit.

iOS / Android — demnächst