Méthodes DSP

Ce que fait le moteur spectral, avec les constantes et leurs justifications — et les limites assumées. La référence complète est doc/ARCHITECTURE_AND_DSP_METHODS.md dans le dépôt.

FFT & calibration d'amplitude

  • Fenêtre de Hann sur chaque trame, recouvrement 50 % (STFT standard).
  • FFT réelle (DoubleFFT_1D.realForward) sur buffers préalloués — zéro allocation par trame dans la FFT elle-même.
  • Calibration mag / (N/4) : un sinus pleine échelle tombant exactement sur un bin lit 0 dBFS. La valeur affichée est une amplitude, pas une énergie — c'est voulu et testé (cas 0 / −20 / −60 dBFS).
  • La fréquence d'échantillonnage est threadée depuis la source (live ou fichier) : aucun « 44100 » littéral hors AudioConfig, la CI le fait échouer.
  • Le masque sous 30 Hz est une politique d'affichage (DISPLAY_MIN_FREQ_HZ) : les données sous 30 Hz restent vraies, seules la colormap, le PNG et le PDF les planquent.

Indice d'émergence NVH

Le mode « Émergence NVH » met en évidence les composantes tonales qui dépassent le bruit local. C'est un indicateur maison (échelle 0–30 dB, 0 = rien) qui combine :

  • une porte d'amplitude profilée en fréquence (−75 dBFS en BF, −85 dBFS entre 0,5 et 4 kHz) ;
  • un test de pic local strict ;
  • une bande de masquage locale (formule de Terhardt, bornée [150, 350] Hz) ;
  • un ratio ton/bruit (ton net = pic ±2 bins moins le bruit local) hybridé avec une émergence locale PSD.
Ce n'est pas un TTNR ECMA-74 / ISO 1996-2. Le côté tonal et le côté bruit ne sont pas calibrés dans le même système d'unités (somme cohérente de leakage contre densité spectrale sans correction ENBW), ce qui introduit un biais fixe d'environ 1,8 dB. L'application l'assume : aucun libellé normatif n'est utilisé, et le rapport PDF porte la mention en bas de page. Voir l'audit V13.2, §6 D-a.

Intégration temporelle & détection de chocs

  • L'émergence est intégrée sur puissance linéaire (τ = 52 ms, α dérivé de l'intervalle de trame réel — l'intégration ne change pas avec la taille de FFT). Un ton qui disparaît décroît exponentiellement ; pas d'arithmétique de sentinelles.
  • Détecteur de chocs : un taux de montée > 258 dB/s (≡ 6 dB/trame à 43 fps) gèle l'intégration pendant la trame. La première trame d'un flux est analysée (pas de référence factice à −120 dB).
  • Un rétro-masquage de 150 ms rehausse les trames précédentes quand un ton est validé 6 trames de suite — l'apparition d'un ordre remonte en arrière au lieu de « naître » tard.

Suivi d'ordres

  • Pliage du spectre dans le domaine des ordres (0–99,9 par pas de 0,1) à partir de H1 = RPM/60 ; EMA (α = 0,10 ≈ 2,3 s à 63 %).
  • Détection = maximum local + seuil + liste blanche (tolérance 0,25 ordre) ou seuil renforcé en détection ouverte.
  • Lecture de l'ordre tracé : fenêtre de recherche pilotée par l'incertitude de vitesse (voir Chaîne GNSS), bornée à mi-distance de l'ordre voisin — au-delà, l'ordre est « non identifiable ».
  • Correction de scalloping : parabole sur le pic (±1 bin) — un ton à mi-bin n'est plus sous-estimé de 1,42 dB (résiduel ≤ ~0,35 dB). Les corrections non physiques (> 1,8 dB) sont rejetées : ce n'était pas un ton.
  • Une seule implémentation (OrderTrackingEngine) sert le direct ET le balayage plein fichier — les deux copies historiques qui divergeaient sont supprimées (audit A2).

Filtres DSP

Cascade de biquades Direct Form I, Butterworth 8ᵉ ordre vérifié analytiquement (−3,01 dB aux coupures, −48 dB/oct). Le passe-bande est reconstruit comme HP×LP (pas de formule bande/octave). Les filtres s'appliquent à la fois au rendu audio et au PCM analysé : l'affichage montre ce que vous entendez. Fonctions de vérification : BiQuadFilter.magnitudeAt(), testées contre les réponses analytiques.

Limites assumées

  • L'indice d'émergence comporte un biais fixe non corrigé (~1,8 dB) — indicateur de suivi, pas métrologie absolue.
  • La palette Jet est conservée par convention NVH ; perceptuellement non uniforme.
  • La capture live est fixée à 44,1 kHz mono 16 bits (UNPROCESSED si le matériel l'annonce, sinon VOICE_RECOGNITION — la route réelle est enregistrée dans les métadonnées et imprimée sur le rapport).
  • Le microphone d'un téléphone n'est pas un micro de mesure calibré : les dBFS sont des niveaux relatifs, comparables entre eux au sein d'un même essai.