Sonir/Fonctionnalités & le calcul

Ce que nous mesurons, et comment.

FEATURES & MATH

Nous alignons les graphiques mêmes qui apparaissent sur les écrans de mesure de Sonir et expliquons ce que chacun mesure et comment il est calculé. Nous avons ouvert les formules de définition et les procédures de calcul aussi loin que nous pouvons les publier. Ne pas en faire une boîte noire est, selon nous, ce qui inspire confiance dans un outil de mesure.

A

Mesure

MEASURE

Mesures fondamentales que vous pouvez lancer instantanément avec le micro intégré. Tout cela est accessible gratuitement.

72.3 dB SPL · A · FAST

measure › SPL — la jauge à arc de 270° dans viz/spl_arc.dart

SPL (niveau de pression acoustique)

Free
Affiche le volume en dB. La pondération prend en charge A / C / Z (plat), et la pondération temporelle prend en charge Fast (125 ms) / Slow (1 s) / Impulse (35 ms). Elle affiche aussi Leq, le pic et le minimum en même temps. Avant calibration, elle lit en dBFS ; chargez un fichier de calibration et elle est promue en dB SPL.
Voir le calcul
Lp Lp = 20·log10(p/p0),   p0 = 20 µPa
Procédure : prenez la RMS (moyenne quadratique) de la forme d’onde d’entrée sur une fenêtre temporelle, puis convertissez en dB avec la formule ci-dessus. La pondération A/C/Z est implémentée comme une cascade de biquads obtenue par transformation bilinéaire des pôles analogiques de IEC 61672-1 (spl.rs). La pondération temporelle est lissée par les constantes de temps (Fast/Slow/Impulse) d’une moyenne mobile exponentielle. La conversion en dB SPL consiste simplement à ajouter le décalage de calibration offset_db — pour éviter des valeurs absolues exagérées sur des appareils non calibrés, elle reste en dBFS jusqu’à la calibration.
201001k10k20k

measure › RTA — viz/fft_bars.dart (bins 1/12-oct)

Spectre RTA / FFT

Free
Affiche l’énergie par fréquence en temps réel. Les fonctions de fenêtre sont Hann (par défaut) / Hamming / Blackman, et la résolution de bande bascule entre 1/3, 1/6 et 1/12 d’octave. Les graves sont teintés de la couleur d’accent et les aigus sont plus sombres pour la lisibilité.
Voir le calcul
X(k) X(k) = Σn=0N−1 w(n)·x(n)·e−j2πkn/N    20·log10|X(k)|
Procédure : appliquez la fenêtre w(n) au bloc d’entrée (1024–4096 points en temps réel) et prenez une FFT réelle (realfft). Convertissez l’amplitude de chaque bin en dB et regroupez l’énergie en bandes de fractions d’octave pour l’affichage en barres. La fenêtre est un compromis entre résolution (lobe principal étroit) et fuite (lobes secondaires bas) — la Hann par défaut équilibre les deux. L’analyse IR utilise de longues FFT de 65536 points ou plus.
0-20-40-60 Son direct
0ms150300450ms

measure › FR — ETC (courbe énergie-temps). Ligne verticale = son direct, le reste est réflexions et réverbération

Balayage → réponse impulsionnelle → acoustique de la pièce

Free
Diffusez et enregistrez un balayage (sweep) logarithmique (Farina ESS), puis obtenez la réponse impulsionnelle (IR) de la pièce par convolution avec un filtre inverse. À partir d’elle, nous calculons RT60 / EDT / C50 / D50 / réponse en fréquence / ETC tous en une fois. L’analyse large bande sur tout le spectre (par défaut 20 Hz–20 kHz) est gratuite.
Voir le calcul
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
Obtention de l’IR : générez un balayage logarithmique par la méthode de Farina → synchronisez la diffusion et l’enregistrement → corrigez la latence par corrélation croisée FFT de l’enregistrement et du chirp de référence → convoluez le filtre inverse (inversion temporelle + correction d’amplitude) pour extraire l’IR (ir.rs). Le graphique ci-dessus est l’ETC (courbe énergie-temps) de cette IR, montrant la structure temporelle du son direct, des réflexions et de la réverbération.
RT60 : intégrez à rebours l’IR au carré en une courbe de décroissance de Schroeder, tronquez la queue de bruit et ajustez une droite. Extrapolez la pente de −5 dB à −35 dB (T30) ou −5 à −25 dB (T20) jusqu’à 60 dB. L’EDT est la pente de 0 à −10 dB × 6.
C50 / D50 : prenez le rapport d’énergie autour de 50 ms (depuis le pic, dans la troncature) pour la clarté / la définition. Les bandes au SNR ou au r² de régression insuffisant sont signalées par un avertissement de confiance.
0 t↓
201001k10k20k

measure › FR — heatmap CSD (X = fréquence / Y = temps ↓ / couleur = dB)

Waterfall (CSD) / ETC

Free
Découpez la même IR selon le temps pour montrer « quelles fréquences voient leur réverbération persister, et pendant combien de temps » (décroissance spectrale cumulée / CSD). Axe horizontal = fréquence, axe vertical = temps (0 en haut, progressant vers le bas), couleur = énergie (dB). Les modes de basse fréquence et la résonance caisseuse sautent aux yeux.
Voir le calcul
CSD S(f, tk) = | FFT[ h(τ)·w(τ − tk) ] |  ,  tk = k·Δt
Procédure : décalez progressivement une fenêtre temporelle w vers l’arrière sur l’IR et appliquez une FFT à chaque fois (FFT à court terme). Empilez le spectre de chaque instant en profondeur pour le rendre. Plus la fenêtre avance, plus les composantes à décroissance rapide disparaissent, ne laissant que les bandes persistantes (ondes stationnaires, résonance de caisse) traîner dans le lointain. L’ETC est l’enveloppe de l’IR |h(t)| affichée en dB, utilisée pour lire les temps d’arrivée des premières réflexions.
B

Enregistrement et comparaison

RECORD & COMPARE

Le cœur de Sonir : aligner les enregistrements sur « les mêmes conditions » et les comparer.

201001k10k20k
Rec A · Micro intégré Rec B · UMIK-2 calibré

compare — deux réponses en fréquence superposées à une référence de 0 dB

Comparaison + spectres superposés

Pro
Alignez les niveaux de deux enregistrements, basculez instantanément et superposez les spectres pour visualiser la différence. L’essentiel est de supprimer la plus grande illusion — une différence de niveau — avant de comparer. Alignez les métadonnées du profil de matériel, des tags de pièce et du fichier de calibration afin de pouvoir les mettre côte à côte sous « les mêmes conditions » même plus tard.
Voir le calcul
level g = RMSref / RMSx    x′(n) = g·x(n)
Procédure : trouvez le gain g qui aligne la RMS de chaque enregistrement sur la référence et alignez-les (éliminant l’illusion d’égale sonie où « le plus fort sonne mieux »). Le basculement effectue un fondu enchaîné avec une rampe à puissance constante pour éviter des clics abrupts. Les spectres sont superposés sur les mêmes bins 1/12-oct, montrant A en bleu et B en orange pour révéler la différence.
87 OVERALL
Écrêtage 98
Plancher de bruit 86
Plage dynamique 74
Équilibre fréq. 90

record › score — ScoreRing (anneau circulaire) + la ventilation des 4 axes

Score d’enregistrement

Free
Notez un enregistrement unique sur quatre axes — écrêtage, plancher de bruit, plage dynamique et équilibre fréquentiel — et agrégez en un score de 0 à 100. Générez une carte de comparaison que vous pouvez publier directement sur les réseaux sociaux. Les seuils de chaque axe sont publics, et les pondérations sont ajustables dans les réglages.
Voir le calcul
score Score = Σi wi·si,   si = clamp( mapper linéairement chaque axe sur 0–100 )
Définitions des 4 axes (score.rs, seuils ajustables) :
  • Écrêtage : proportion d’échantillons figés à 0 dBFS. 100 à 0 %, 0 à 1 %.
  • Plancher de bruit : RMS pondérée A des sections silencieuses. 100 à −70 dBFS, 0 à −30 dBFS.
  • Plage dynamique : méthode DR Database (pic − RMS des 20 % supérieurs). 100 à 14 dB, 0 à 4 dB.
  • Équilibre fréquentiel : écart RMS par rapport à un ajustement linéaire des bandes 1/3-oct. 100 à 3 dB, 0 à 12 dB (l’inclinaison du genre est absorbée par l’ajustement).
Les pondérations wi sont égales par défaut (0,25 × 4) et peuvent être modifiées sur la page des réglages.
0-30-60-90-120
BW effective 38 kHz
201001k10k40k

inspect — spectre max-hold + marqueur de bande passante effective

Inspection de fichier (détection de faux hi-res / avec perte)

Free
Analyse un fichier audio en lui-même (indépendamment du micro, de la pièce ou de l’enceinte). L’essence est une « contradiction entre la déclaration (fréquence d’échantillonnage du conteneur) et la réalité (la coupure du spectre PCM) ». Si la bande passante effective tombe bien en dessous de la fréquence de Nyquist déclarée, un faux hi-res est suspecté ; s’il y a un mur abrupt à une fs standard, une origine avec perte est suspectée.
Voir le calcul
bandwidth feff = max f  s.t.  Smaxhold(f) ≥ Speak − 60dB
Procédure (inspect.rs) : du code natif décode le fichier en un WAV temporaire à la fs native, et Rust effectue une lecture en flux (sans charger un gros PCM sur la frontière). Construisez un spectre max-hold prenant le maximum de chaque bin avec une fenêtre de Hann à 50 % de recouvrement (afin que les aigus instantanés des cymbales et autres ne soient pas écrasés par le moyennage). Traitez −60 dB depuis le pic comme le « plancher », et fixez la fréquence la plus haute le dépassant comme la bande passante effective feff.
  • Faux hi-res : déclaré au-dessus de 48k mais feff s’arrête à la bande CD (~26 kHz) → suréchantillonnage suspecté.
  • Origine avec perte : rapport feff/Nyquist élevé avec un mur de briques abrupt ≥48 dB/oct à 16–20 kHz.
Les seuils sont provisoires, en cours de calibration sur des échantillons d’appareils réels.
C

Finition et export

FINISH & EXPORT

Appliquez ce que vous avez mesuré à votre environnement, et partagez-le.

+60-6
2050100200300Hz
Mesuré Cible Corrigé

measure › FR/EQ — mesuré vs cible + la courbe corrigée

Room EQ / PEQ automatique

Pro
Superposez une mesure calibrée à une courbe cible et laissez proposer automatiquement un EQ paramétrique qui minimise la différence. Le principal champ de bataille est le bas du spectre où les modes s’emballent (par défaut 20–300 Hz). La mesure et l’aperçu PEQ sont gratuits ; l’export au format REW / EqualizerAPO est en Pro. Un verrou strict exige une mesure calibrée.
Voir le calcul
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 )
Procédure (roomeq.rs) : une méthode gloutonne (matching pursuit) qui place un biquad peaking un à la fois là où l’erreur résiduelle error(f) est la plus grande. Les coefficients du biquad implémentent directement l’EQ peaking du RBJ Audio EQ Cookbook. Elle préfère les atténuations aux amplifications, borne séparément l’amplification et l’atténuation maximales pour protéger le headroom, et calcule automatiquement un préampli négatif pour annuler l’amplification excédentaire. La correction est limitée à la région modale en dessous de la fréquence de Schroeder. La courbe verte dans le graphique ci-dessus est la courbe prédite après correction.

À propos de la transparence

Les formules et procédures présentées ici correspondent à l’implémentation réelle du cœur DSP de l’app (Rust). Certains seuils sont des valeurs provisoires en cours de calibration sur des échantillons d’appareils réels, et seront mis à jour une fois finalisés. La mesure se termine sur l’appareil sans passer par un serveur ; les enregistrements, les IR et les fichiers de calibration ne sont jamais envoyés à l’extérieur.

CLOSING

Prêt dès que vous l’êtes.

Le lancement est en préparation. Apportez de la reproductibilité dès votre toute première mesure.

iOS / Android — bientôt