Voir et mesurer le son — épisode 6/10. Un crête-mètre numérique peut relever un maximum très bref, tandis qu’un indicateur quasi-crête réagit suivant une montée et un retour définis. Avec Confidence, de Dmc Mystic, nous allons comparer ces comportements et comprendre pourquoi deux affichages peuvent indiquer des niveaux différents sans mesurer la même chose.
Écouter Confidence
Ouvrir le MP3 original. Pour l’exercice, écoutez 0:00–0:20, puis 1:00–1:20, au même réglage de volume. Le fichier est identifié dans ses tags comme la piste 11/15 de l’album Electro cloud. Les comparaisons ci-dessous portent sur le signal réellement décodé.
1. PPM : Peak Programme Meter
Le terme PPM désigne une famille d’indicateurs de niveau de programme ; il faut préciser le type de détecteur. Dans cet article, nous nous intéressons au quasi-PPM, qui possède un temps d’intégration court mais non nul et un retour plus lent.
L’AES distingue les détecteurs de crête instantanée des quasi-crête, dont l’intégration est typiquement de l’ordre de quelques millisecondes. Les instruments professionnels proposent différentes échelles et réponses : la fiche RTW citée en références comporte notamment des réglages d’intégration et des modes distincts pour les indicateurs de crête. Il n’existe donc pas un unique comportement à déduire du seul mot « PPM ».
| Indicateur | Principe | Limite essentielle |
|---|---|---|
| Crête échantillon | Maximum absolu des valeurs numériques observées | Ne recherche pas les maxima entre les échantillons |
| Quasi-PPM | Détecteur à intégration courte et retour défini | Peut sous-indiquer des transitoires très brèves |
| True Peak | Estimation des maxima du signal reconstruit | Dépend d’une méthode d’estimation et de ses tolérances |
2. L’intégration n’est pas le rafraîchissement de l’écran
Un détecteur peut fonctionner à une résolution bien plus fine que l’affichage. Un écran à 25 images par seconde ne signifie pas que la mesure ne regarde qu’un échantillon toutes les 40 ms. À l’inverse, dessiner une barre plus souvent ne transforme pas un détecteur lent en détecteur de crête échantillon.
Il faut aussi séparer le maintien de crête, qui fige temporairement un maximum, du retour, qui définit la redescente. Deux interfaces peuvent partager le même détecteur et donner des impressions différentes si l’une conserve un trait de maximum pendant une seconde.
3. Conditions de mesure du MP3
La copie fournie a été inspectée et décodée avec FFmpeg et FFprobe 6.1.1. Elle contient un flux audio stéréo à 48 000 Hz, dont le débit indiqué est d’environ 269,9 kbit/s. Le décodage flottant 32 bits est réalisé sans gain, normalisation ou rééchantillonnage ajouté.
Le PCM obtenu comporte 10 624 732 échantillons par canal, soit 221,348583 secondes. FFprobe indique une durée de 221,376 secondes. Le journal signale un commentaire ID3 mal formé qu’il ignore ; le décodage audio complet a réussi. Cette différence de durée et cet avertissement ne servent pas à diagnostiquer la qualité musicale.
4. Mesures de crête et simulation : deux résultats distincts
| Grandeur | Gauche | Droite |
|---|---|---|
| Crête échantillon mesurée | −1,715 dBFS | −1,701 dBFS |
| Maximum du modèle pédagogique | −2,452 dB réf. 1 | −2,400 dB réf. 1 |
| Écart entre ces maxima | 0,737 dB | 0,699 dB |
La deuxième ligne n’est pas une lecture certifiée d’un PPM normalisé. Elle provient du modèle décrit ci-dessous. L’écart compare les maxima de chaque détecteur sur tout le fichier ; ils ne sont pas nécessairement atteints au même instant. Ce résultat ne constitue pas une correction fixe à appliquer à tous les PPM ou à tous les morceaux.
5. Un modèle pédagogique entièrement défini
Nous découpons d’abord le signal en blocs non chevauchants de 1 ms, soit 48 échantillons par canal. Pour chaque bloc, u[k] = max(|x[n]|). Cette première étape retient les pointes du bloc mais perd leur durée interne exacte. Une pointe de moins de 1 ms est donc représentée par le maximum d’un bloc : ce modèle ne convient pas à la certification de transitoires sous-milliseconde.
L’état du détecteur commence à zéro. À chaque bloc de durée Δt, on applique y[k] = a y[k−1] + (1−a)u[k]. Le coefficient vaut a = exp(−Δt/τ). On emploie une constante de montée quand u[k] dépasse l’état précédent, et une constante de retour dans le cas contraire.
- Montée : τa = 0,010 / ln(10), soit environ 4,343 ms. Face à un échelon constant, le modèle rejoint 90 % du niveau final après 10 ms, soit environ −0,915 dB par rapport à sa valeur finale.
- Retour : τr = 1,5 / ln(10), soit environ 0,6514 s. Face au silence, la valeur baisse d’un facteur 10 en 1,5 s, donc de 20 dB.
Ces paramètres sont des choix de démonstration, pas une revendication de conformité IEC, DIN ou BBC. Le temps pour atteindre un pourcentage donné n’est pas la constante de temps elle-même. Une validation normalisée demanderait des salves, des fréquences et des tolérances précises.
La sortie est affichée en 20 log10(y), avec l’amplitude numérique 1 comme référence. Pour une sinusoïde de 1 kHz stable à 48 kHz, les blocs de 1 ms couvrent une période et retiennent sa crête : après stabilisation, la sortie rejoint ce niveau dans ce cas particulier. Ce contrôle ne prouve pas la même réponse à toutes les fréquences.
6. Voir la différence sur Confidence
Le modèle peut rester au-dessus des crêtes du bloc courant lorsque le son baisse : son état conserve la mémoire du passage précédent. Cela ne signifie pas qu’il invente une crête numérique dans le fichier. Sa valeur ne dépasse cependant pas le maximum absolu déjà rencontré, pour ce modèle dont les coefficients forment des combinaisons convexes.
| Passage / canal | Crête dBFS | Maximum du modèle, dB réf. 1 |
|---|---|---|
| 0:00–0:20 / gauche | −2,321 | −2,794 |
| 0:00–0:20 / droite | −2,234 | −2,694 |
| 1:00–1:20 / gauche | −2,434 | −2,970 |
| 1:00–1:20 / droite | −2,302 | −2,901 |
Le modèle est calculé en continu depuis le début du morceau, puis les fenêtres sont extraites. Le réinitialiser à zéro au début de chaque extrait pourrait modifier sa lecture initiale. C’est un paramètre de méthode à conserver lorsque l’on compare des outils.
7. Reproduire l’analyse
Les commandes utilisent une copie locale nommée confidence.mp3.
ffmpeg -v warning -i confidence.mp3 -map 0:a:0 -c:a pcm_f32le -f f32le confidence.f32
ffmpeg -hide_banner -i confidence.mp3 -map 0:a:0 -af astats=metadata=0:reset=0 -c:a pcm_f32le -f null -
astats donne les crêtes échantillon de contrôle ; il ne devient pas un quasi-PPM avec cette commande. La sortie flottante évite de limiter artificiellement la chaîne de calcul au format entier.
Calcul du modèle et export CSV
import numpy as np
fs = 48000
x = np.fromfile("confidence.f32", dtype="<f4").reshape(-1, 2)
n = len(x) // 48
u = np.max(np.abs(x[:n*48].reshape(n, 48, 2)), axis=1).astype(float)
if n * 48 < len(x):
u = np.vstack((u, np.max(np.abs(x[n*48:]), axis=0)))
dt = np.full(len(u), 0.001)
dt[-1] = (len(x) - (len(u)-1)*48) / fs
tau_a = 0.010 / np.log(10)
tau_r = 1.5 / np.log(10)
y = np.zeros_like(u)
etat = np.zeros(2)
for k in range(len(u)):
tau = np.where(u[k] > etat, tau_a, tau_r)
a = np.exp(-dt[k] / tau)
etat = a * etat + (1-a) * u[k]
y[k] = etat
avec_plancher = np.maximum(y, 1e-20)
db = 20 * np.log10(avec_plancher)
np.savetxt("confidence-modele.csv", np.column_stack((np.cumsum(dt), db)),
delimiter=",", header="fin_bloc_s,gauche_db_ref1,droite_db_ref1",
comments="")
Ce script nécessite NumPy. Il conserve la durée réelle du dernier bloc, qui peut être plus court que 1 ms. Les colonnes gauche et droite sont exprimées en dB relatifs à l’amplitude 1. Le fichier brut n’a pas d’en-tête ; la fréquence et les deux canaux sont donc explicitement définis.
8. Bien choisir ce que l’on contrôle
Pour connaître les excursions des échantillons, utilisez un détecteur qui conserve ces maxima. Pour estimer les crêtes reconstruites entre les points, utilisez une mesure True Peak documentée. Pour comparer la sonie, utilisez un indicateur LUFS. Le quasi-PPM apporte une lecture temporelle distincte, qui ne remplace pas ces mesures.
Une barre sous le seuil maximal ne garantit pas l’absence d’écrêtage dans les autres étapes de la chaîne. Inversement, la couleur rouge d’un cadran dépend de son seuil et de sa référence. Toute interface devrait annoncer le détecteur, la référence, la montée, le retour et l’éventuel maintien de crête.
Sources et validation
Les maxima du MP3 ont été contrôlés avec FFmpeg et par calcul sur le PCM flottant. Le modèle a été testé sur un échelon et un retour au silence, avec les paramètres publiés ci-dessus. La couverture est une illustration éditoriale.
- AES : Peak Metering et distinction entre crête instantanée et quasi-crête.
- RTW : fiche technique TouchMonitor TM3, échelles et réglages d’intégration.
- FFmpeg : statistiques de contrôle avec astats.
Prochain épisode : LUFS et EBU R128, pour passer du niveau numérique à la mesure de sonie.