Voir et mesurer le son — épisode 1/10. Avant de lire un VU-mètre ou de comparer des valeurs LUFS, apprenons à regarder le signal dans le temps. La forme d’onde, souvent appelée waveform, permet de situer les événements, de comparer les canaux et de préparer un montage. Elle accompagne l’écoute : elle ne mesure pas, à elle seule, la qualité musicale.
Écouter le fichier utilisé dans cet article
Notre cas pratique est Breakbeat piste 1 a, crédité DJ Dmc Mystic, album Break the concrete - Album A. Les informations de titre et d’artiste proviennent des métadonnées du fichier fourni.
Ouvrir le MP3 original. Pour l’exercice, écoutez d’abord de 0:00 à 0:20, puis de 2:00 à 2:20, au même réglage de volume. Comparez ensuite ces régions sur la figure. Les niveaux mesurés sont présentés plus bas ; aucune identification instrumentale n’est déduite de l’image seule.
1. Qu’est-ce qu’une forme d’onde ?
Un signal audio numérique contient une suite d’échantillons. Pour chaque canal, l’axe horizontal représente le temps ; l’axe vertical représente l’amplitude numérique, positive ou négative. Le centre correspond à zéro. Il ne représente pas une pression acoustique mesurée dans la pièce : le niveau réellement entendu dépend aussi du volume de lecture, du convertisseur et des enceintes.
Pour une fréquence d’échantillonnage fs, l’échantillon d’indice n correspond au temps t = n / fs. À 44 100 Hz, deux échantillons successifs sont espacés d’environ 22,68 microsecondes. Une seconde stéréo contient deux séries de 44 100 valeurs.
Un MP3 conserve une représentation compressée avec pertes du son. Pour tracer son waveform, on commence par le décoder en PCM. La courbe décrit donc le signal reconstruit par le décodeur, et non une copie exacte du master avant encodage.
2. Pourquoi un morceau entier ressemble-t-il à une enveloppe ?
Sur plusieurs minutes, les millions d’échantillons ne peuvent pas être affichés individuellement. Il faut les regrouper par intervalles. Ici, chaque colonne conserve le minimum et le maximum d’un bloc, séparément pour chaque canal. Avec 1 600 blocs sur 263,55 secondes, un bloc couvre environ 165 millisecondes, soit plus de 7 000 échantillons par canal. Le navigateur peut encore réduire cette image sur mobile.
Une zone épaisse traduit des excursions d’amplitude importantes dans ces blocs. Elle ne prouve pas que tous les échantillons sont proches du maximum. Une zone mince peut correspondre à un passage faible, à une pause ou à une transition. Pour distinguer ces hypothèses, il faut zoomer, mesurer et écouter.
3. Carte technique et conditions de mesure
Le fichier a été analysé avec FFmpeg et FFprobe 6.1.1. Le flux audio a été décodé à sa fréquence native, sans gain, normalisation ni effet, en flottant 32 bits. Les résultats concernent cette copie du fichier et cette chaîne de décodage.
| Propriété | Valeur |
|---|---|
| Codec audio | MP3 — MPEG Audio Layer III |
| Fréquence d’échantillonnage | 44 100 Hz |
| Canaux | 2 — stéréo |
| Débit indiqué pour le flux audio | 192 kbit/s |
| Durée estimée par FFprobe | 263,155 s — environ 4 min 23 s |
| Durée du PCM effectivement décodé | 263,549 s — 11 622 528 échantillons par canal |
| Taille du fichier | 6 469 314 octets |
| Image intégrée | JPEG 600 × 600 pixels, marqué comme pochette |
FFmpeg signale que la durée est estimée à partir du débit : la différence d’environ 0,395 seconde avec le comptage des échantillons décodés justifie de préciser la méthode utilisée. Le débit global, proche de 196,7 kbit/s, inclut les données non audio ; il ne remplace pas le débit de 192 kbit/s indiqué pour le flux audio.
Le lecteur signale également un commentaire ID3 mal formé (« Incorrect BOM value »), qu’il ignore. Le décodage audio s’est terminé. Ce message de métadonnées ne constitue pas un diagnostic de défaut audible.
4. Amplitude, dBFS et résultat sur ce MP3
Pour une amplitude normalisée de valeur absolue A, le niveau est L = 20 log10(A), avec la référence A = 1 pour 0 dBFS. Ainsi A = 0,5 donne environ −6,02 dBFS, et A = 0,1 donne −20 dBFS. Le logarithme de zéro tend vers moins l’infini. Cette relation porte sur une amplitude ; une puissance emploie un facteur 10 devant le logarithme.
| Mesure | Gauche | Droite |
|---|---|---|
| Crête échantillon | +0,509 dBFS | +0,743 dBFS |
| Amplitude absolue maximale | 1,060359 | 1,089313 |
| RMS global | −13,660 dBFS | −13,754 dBFS |
| Échantillons dont |x| > 1 | 36 | 77 |
Comment des valeurs supérieures à zéro sont-elles possibles ? Un décodeur MP3 travaillant en virgule flottante peut restituer des échantillons supérieurs à la pleine échelle nominale. Ces valeurs peuvent être conservées dans le calcul. Une conversion vers un format entier sans réduction préalable de niveau peut les écrêter. Cela ne démontre ni un écrêtage du master d’origine, ni une saturation audible de tous les lecteurs.
Il s’agit ici de crêtes échantillon. Ce tableau ne donne pas de True Peak en dBTP, qui nécessite une estimation des maxima du signal reconstruit entre les échantillons. La différence de crête entre gauche et droite ne suffit pas non plus à conclure à un déséquilibre perceptif.
5. Petit exercice d’écoute et de lecture
Sur les vingt premières secondes, le RMS calculé sur les deux canaux vaut environ −20,07 dBFS. Entre 2:00 et 2:20, il vaut environ −13,92 dBFS. La différence est donc d’environ 6,15 dB pour cette mesure d’énergie moyenne, à durée égale.
Ce RMS commun est calculé par R = √[(ΣxL² + ΣxR²) / (2N)], puis converti avec 20 log10(R). Il ne résulte pas d’une sommation mono : des signaux de phase opposée ne s’annulent donc pas dans cette formule. Il ne comporte ni pondération perceptive ni gating.
Écoutez les deux régions à volume de lecture constant et comparez leur occupation graphique. Une différence de RMS n’est pas une différence équivalente en LUFS, ni une prédiction exacte de la sensation de volume. Le contenu fréquentiel, les transitoires et leur répartition temporelle comptent aussi.
6. Reproduire le workflow avec FFprobe et FFmpeg
Placez une copie locale du morceau sous le nom source.mp3. Ces commandes utilisent ce nom ; elles ne modifient pas le fichier d’origine.
Identifier le flux audio
ffprobe -v error -select_streams a:0 -show_streams -show_format -of json source.mp3
La sélection a:0 vise le premier flux audio : la pochette JPEG intégrée ne sera pas prise pour une piste vidéo musicale. FFprobe produit ici des informations de structure ; il ne calcule pas la courbe.
Générer un aperçu statique
ffmpeg -i source.mp3 -filter_complex "[0:a:0]showwavespic=s=1600x500:split_channels=1:scale=lin:filter=peak:colors=0xace7ee|0xdce6f0[v]" -map "[v]" -frames:v 1 waveform.png
Cette commande sélectionne explicitement l’audio et génère une seule image. Les canaux sont séparés, l’échelle est linéaire et le regroupement utilise les crêtes. L’aperçu FFmpeg ne remplace pas le graphique min/max flottant présenté plus haut : leurs algorithmes et formats internes peuvent différer. Pour conserver les dépassements numériques dans une mesure, utilisez les données flottantes.
Examiner vingt secondes avec davantage de détail
ffmpeg -i source.mp3 -filter_complex "[0:a:0]atrim=start=120:end=140,asetpts=PTS-STARTPTS,showwavespic=s=1600x500:split_channels=1:scale=lin:filter=peak[v]" -map "[v]" -frames:v 1 waveform-120-140.png
Le découpage est appliqué après ouverture du fichier. Comparez cette image à l’aperçu global : la résolution temporelle change, donc les détails visibles changent aussi. Ne comparez pas deux captures dont les échelles ou les gains d’affichage sont différents sans le préciser.
Mesurer les amplitudes et conserver le décodage flottant
ffmpeg -hide_banner -i source.mp3 -map 0:a:0 -af astats=metadata=0:reset=0 -f null -
ffmpeg -v error -i source.mp3 -map 0:a:0 -c:a pcm_f32le -f f32le decoded.f32
astats imprime notamment les niveaux de crête et RMS dans le journal. Le fichier brut decoded.f32 contient les valeurs flottantes entrelacées gauche/droite, sans en-tête : sa lecture exige de connaître la fréquence, le nombre de canaux et l’ordre des octets. Les 32 bits décrivent cette sortie de calcul, pas une résolution d’origine de 32 bits du MP3.
7. Ce que le waveform ne permet pas de conclure
- Identifier une fréquence : un aperçu global n’indique pas où se trouvent les graves ou les aigus. Il faut un spectre ou un spectrogramme.
- Mesurer la sonie : la hauteur graphique n’est pas une mesure LUFS.
- Certifier un écrêtage : un aspect compact ou un sommet aplati invite à examiner le signal, sans établir seul l’historique du traitement.
- Contrôler la compatibilité mono : deux enveloppes similaires ne prouvent pas que les signaux sont en phase.
- Évaluer un encodage : on ne déduit pas la fidélité d’un MP3 de son seul waveform.
Un VU-mètre suit une réponse temporelle définie ; un crête-mètre surveille des maxima ; un indicateur RMS décrit une moyenne quadratique. Le waveform fournit, lui, une représentation temporelle. Les prochains articles confronteront ces lectures sur d’autres fichiers.
Références et méthode
Les caractéristiques et résultats chiffrés de ce cas pratique ont été mesurés sur le fichier lié dans le lecteur. La figure scientifique est issue du décodage réel ; l’image de couverture est une illustration éditoriale.
- Documentation officielle FFmpeg : showwavespic et ses paramètres.
- Documentation officielle FFmpeg : astats.
- Documentation officielle FFprobe : sélection des flux et sortie JSON.
Prochain épisode : FFprobe, ou comment établir la carte d’identité technique d’un fichier audio et interpréter ses métadonnées.