Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
Aujourd’hui — 19 février 2026Flux principal

FFmpeg - Comment normaliser le volume audio proprement avec loudnorm

Par : Korben
17 février 2026 à 09:25

Vous avez déjà remarqué comment le volume varie d'une vidéo à l'autre sur YouTube, ou pire, comment certaines pubs sont 10 fois plus fortes que le contenu ? Bah c'est parce que tout le monde n'utilise pas la même norme de volume. Et si vous produisez du contenu audio/vidéo, c'est le genre de détail qui fait la différence entre un truc amateur et un rendu pro.

La bonne nouvelle, c'est que FFmpeg intègre déjà un filtre qui s'appelle loudnorm et qui gère tout ça automatiquement. La norme utilisée, c'est le LUFS (Loudness Units Full Scale), qui est devenue le standard de l'industrie, et YouTube, Spotify, les TV... tout le monde utilise ça maintenant pour mesurer et normaliser le volume audio.

D'ailleurs, si vous débutez complètement avec cet outil, je vous conseille de jeter un œil à mon guide FFmpeg pour les nuls pour bien piger les bases de la ligne de commande.

Allez, c'est partiii ! Temps estimé : 2-5 minutes par fichier (selon la méthode choisie)

Mais, avant de se lancer dans les commandes, un petit point sur les paramètres qu'on va manipuler. Le filtre loudnorm utilise trois valeurs principales. D'abord I (Integrated loudness), c'est le volume moyen global mesuré en LUFS. La valeur standard pour le streaming, c'est -16 LUFS pour YouTube et Spotify, ou -23 LUFS pour la diffusion broadcast. Ensuite TP (True Peak), le niveau maximal que le signal ne doit jamais dépasser. On met généralement -1.5 dB pour avoir une marge de sécurité. Et enfin LRA (Loudness Range), qui définit la plage dynamique autorisée, généralement autour de 11 dB.

Méthode 1 : Normalisation simple (single-pass)

C'est la méthode la plus rapide, parfaite pour du traitement à la volée :

ffmpeg -i entree.wav -af loudnorm=I=-16:TP=-1.5:LRA=11 -ar 48000 sortie.wav

Pourquoi ces valeurs : -16 LUFS c'est le standard YouTube/Spotify, -1.5 dB de true peak évite le clipping, et 11 dB de range dynamique garde un son naturel.

Le truc c'est que cette méthode fait une analyse en temps réel et ajuste à la volée. C'est bien, mais pas parfait. Pour un résultat vraiment précis, y'a mieux.

Méthode 2 : Normalisation en deux passes (dual-pass)

Cette méthode analyse d'abord le fichier complet, puis applique les corrections exactes. C'est plus long mais beaucoup plus précis.

Première passe, on analyse :

ffmpeg -i entree.wav -af loudnorm=I=-16:TP=-1.5:LRA=11:print_format=json -f null -

FFmpeg va vous sortir un bloc JSON avec les mesures du fichier (input_i, input_tp, input_lra, input_thresh). Notez-les bien, car vous allez les injecter dans la deuxième passe.

Deuxième passe, on applique avec les valeurs mesurées (remplacez les chiffres par ceux obtenus à l'étape précédente) :

ffmpeg -i entree.wav -af loudnorm=I=-16:TP=-1.5:LRA=11:measured_I=-24.35:measured_TP=-2.15:measured_LRA=8.54:measured_thresh=-35.21:offset=0:linear=true -ar 48000 sortie.wav

Pourquoi cette méthode ? En fait, en passant les valeurs mesurées, FFmpeg sait exactement de combien ajuster. L'option linear=true force une normalisation linéaire plutôt que dynamique, ce qui préserve mieux la dynamique originale.

Pour les fichiers vidéo

Le principe est le même, on ajoute juste -c:v copy pour garder la vidéo intacte sans la ré-encoder :

ffmpeg -i video.mp4 -c:v copy -af loudnorm=I=-16:TP=-1.5:LRA=11 -ar 48000 video_normalise.mp4

D'ailleurs, pour ceux qui veulent automatiser ça à l'extrême, j'avais parlé de FFmpegfs , un système de fichiers qui transcode automatiquement ce que vous déposez dessus. C'est pratique si vous avez une grosse bibliothèque à gérer.

Traitement par lots avec ffmpeg-normalize

Si vous avez plein de fichiers à traiter, y'a un outil Python qui automatise la méthode dual-pass :

pip install ffmpeg-normalize
ffmpeg-normalize *.wav -o output_folder/ -c:a pcm_s16le

Cet outil fait automatiquement les deux passes et supporte le traitement parallèle. Pratique pour normaliser une bibliothèque entière.

Et en cas de problème ?

Erreur "No such filter: loudnorm" : Votre version de FFmpeg est trop ancienne (il faut la 3.1 minimum). Mettez à jour votre binaire.

Le son est distordu après normalisation : Le fichier source était probablement déjà saturé. Essayez de baisser le target (-18 LUFS au lieu de -16) ou augmentez le headroom du true peak (-2 dB au lieu de -1.5).

Voilà, maintenant vous n'avez plus d'excuse pour avoir des niveaux audio qui varient dans tous les sens. Le LUFS c'est le standard, FFmpeg gère ça nativement, et ça prend 30 secondes.

Vos auditeurs vous remercieront.

Source

Street Fighter II - Une faute d'orthographe corrigée grâce au mollet de Guile

Par : Korben
12 février 2026 à 10:53

Street Fighter II, c'est dans l'esprit de la plupart d'entre nous, 1991, les salles d'arcade qui puent la clope et les pièces de 10 francs qui s'enchaînent... et surtout un écran-titre qui affiche "WORLD WARRIER" au lieu de "WORLD WARRIOR". Ouais, y'avait une coquille dans le titre d'un des jeux de baston les plus légendaires de l'univers et personne ne l'a jamais su !

Magnifique hein ?

Le problème, c'est que sur les bornes d'arcade Capcom CPS1, les graphismes sont gravés dans des puces ROM. Du vrai read-only qu'on grave une bonne fois pour toutes et qu'on ne touche PLUS après. Et en 1991, les puces ROM coûtaient un bras et les délais de production étaient assez dingues... Donc impossible pour Capcom de faire regraver quoi que ce soit même pour une malheureuse lettre.

Nous sommes donc toujours en 1991, à 3 jours de la deadline pour livrer le code ROM (la seule puce encore modifiable à ce stade) et quelqu'un se rend compte du bug.

Horreur malheur ! C'est la panique et tout le monde se met à réfléchir à une solution... Quand soudain, un hack digne des plus belles bidouilles émerge de ces cerveaux endoloris par tant de travail.

Il faut savoir que sur le CPS1, chaque graphisme est découpé en "tiles" c'est à dire des petits carrés de 8×8 pixels. Et le truc important, c'est que chaque tile ne contient pas une lettre entière mais un BOUT de lettre. Le logo "WORLD WARRIOR", c'est en fait une mosaïque de 16 tiles collées les unes aux autres, et chaque carreau contient des fragments des lettres voisines. Impossible donc de toucher à ces carreaux une fois gravés dans la ROM graphique... Mais la table qui dit "colle CE carreau ICI avec CETTE palette de couleurs"... ça, c'était encore modifiable dans la ROM code.

Le hic c'est qu'il fallait composer avec les tiles existantes car pas moyen d'en créer de nouvelles !

Du coup, l'équipe s'est mise à passer au crible les centaines de tiles déjà gravées dans la ROM, une par une, pour trouver des morceaux compatibles avec les bonnes lettres. Et bonne nouvelle... pour certaines tiles, ils ont trouvé des équivalents dans le mot "WORLD" sur l'écran-titre. Et en réarrangeant le puzzle, ils ont réussi à afficher presque tout "WARRIOR" correctement. Presque. Parce que le "i", lui, ressemblait maintenant à un "L" minuscule... il manquait le point mes amis !!

Et c'est là que ça devient du grand art car pour dessiner ce petit point, il leur fallait un carreau avec quasi rien dessus. Ils ont fini par repérer la tile 0x96 dans la ROM... un carré de 8×8 avec UN SEUL pixel allumé dans le coin bas gauche. Ce pixel appartient en fait au mollet de Guile. Ni plus ni moins.

En changeant sa palette (exit la teinte vert kaki, bonjour la couleur du logo), ils l'ont ensuite collé 3 fois au bon endroit pour dessiner le point du "I". Et personne n'a finalement rien capté pendant des DÉCENNIES.

Hé voilà comment, si vous avez joué à Street Fighter II en arcade dans les années 90, vous aviez littéralement un bout de la jambe de Guile planqué dans l'écran-titre sans le savoir. Magnifique non ?

C'est Fabien Sanglard qui a déterré toute cette histoire il y a quelques années, en analysant le code source du CPS1, aidé d'une interview d'Akira Nishitani (un des créateurs du jeu) datant de 1991.

C'est le genre de bidouille qu'on ne fait plus aujourd'hui avec les mises à jour en ligne mais à l'époque, quand la ROM était gravée, c'était FINITO donc fallait se débrouiller avec ce qu'on avait sous la main quand y'avait un souci.

À partir d’avant-hierFlux principal

Footywhoops – Un synthé codé en Go qui génère des patterns musicaux à la volée

Par : Korben
29 janvier 2026 à 09:21

Faire du bruit avec du code, c'est un peu le graal pour tout dev qui aime la musique. On connaît tous les gros trucs en C++ ou les frameworks spécialisés, mais voir débarquer un synthé complet codé en Go, c'est toujours une petite surprise qui se déguste sans modération.

Son nom : Footywhoops .

C'est un couteau suisse sonore que vous pilotez directement depuis votre terminal et qui permet de générer des séquences de batterie, des lignes de basse (un mode "Acid Bass" bien gras avec sub-oscillateur et enveloppes ADSR est de la partie), des arpèges et des mélodies. Le tout peut être calé sur différentes gammes musicales (majeure, mineure, dorienne, blues, etc.) pour éviter de finir avec une cacophonie insupportable. On est un peu dans l'esprit du live coding musical comme ce que propose Strudel ou Dittytoy , mais version ligne de commande.

Sous le capot, c'est du sérieux niveau DSP (Digital Signal Processing) puisqu'on y trouve une réverbération de type Schroeder pour donner de l'espace, plusieurs algorithmes de distorsion (Tanh, Atan, hard clipping) pour salir le signal, et un filtre passe-bas pour sculpter la tonalité. Et pour ceux qui se demanderaient quel est le meilleur langage pour la programmation audio, le C++ reste le roi pour la performance pure, mais Go s'en sort étonnamment bien ici grâce à sa gestion efficace de la concurrence (coucou les goroutines) et l'utilisation de PortAudio pour l'I/O audio. On a d'ailleurs vu d'autres outils sympas en Go récemment, comme SSHM qui utilise le framework Bubble Tea pour son interface terminal.

Le truc est super léger et s'installe en deux minutes si vous avez l'environnement Go prêt sur votre machine. Vous pouvez même enregistrer vos expérimentations directement en WAV (dry ou wet) sans avoir besoin de passer par une DAW (Digital Audio Workstation). D'ailleurs, si vous cherchez des ressources pour faire de la musique sous pingouin, n'hésitez pas à consulter ce catalogue audio pour Linux .

Et si vous avez envie de tester ce petit monstre, voici comment vous lancer.

Pour commencer, vous aurez besoin de Go 1.19 ou plus et des bibliothèques de développement de PortAudio sur votre système.

1. Installation des dépendances

Sur macOS :

brew install portaudio

Sur Ubuntu/Debian :

sudo apt-get install portaudio19-dev

2. Compilation du projet

Récupérez le code et compilez l'exécutable :

git clone https://github.com/system32-ai/footywhoops
cd footywhoops
go build

3. Exemples d'utilisation

Pour lancer une génération automatique de mélodie et de batterie (le mode "standalone") :

./footywhoops -mode synth

Si vous voulez utiliser Footywhoops comme un processeur d'effets (par exemple pour traiter le son de votre micro ou d'une guitare branchée sur votre interface) :

./footywhoops -mode fx -dist 0.8 -reverb 0.5

Vous pouvez évidemment jouer avec plein de paramètres en CLI pour ajuster le son (fréquence du filtre, type de distorsion, taille de la réverb, etc.). Pour voir toutes les options disponibles, un petit ./footywhoops -help et voilà, vous avez la liste complète.

Je pense que j'ai fait le tour... si vous aimez le mélange entre code et synthèse sonore, Footywhoops est un super terrain de jeu. C'est brut, c'est sale, et c'est expérimental mais ça permet de s'amuser un peu !

Anna's Archive vient de sauvegarder la totalité de Spotify

Par : Korben
21 décembre 2025 à 09:25

Vous connaissez Anna's Archive , cette bibliothèque pirate qui sauvegarde tous les livres et articles scientifiques de l'humanité ? Hé bien ils viennent de s'attaquer à un nouveau chantier : sauvegarder Spotify (en tout cas le plus possible), c'est à dire des millions de morceaux + de la métadonnées, soit ~300 téraoctets de données !!

Anna's Archive se focalise normalement sur le texte (livres, et documents de recherche) parce que c'est ce qui a la plus haute densité d'information mais leur mission, c'est de préserver le savoir et la culture de l'humanité, et ça inclut donc aussi la musique. Et comme ils ont trouvé un moyen de scraper Spotify à grande échelle, ils se sont dit "Hey pourquoi pas ? On est des oufs".

Et ça donne la plus grande base de données de métadonnées musicales jamais rendue publique, avec 186 millions d'ISRCs uniques (ces codes qui identifient chaque enregistrement). Pour vous donner un ordre de grandeur, MusicBrainz n'en a que 5 millions. Niveau fichiers audio, ils ont aussi archivé environ 86 millions de morceaux, ce qui représente 99,6% des écoutes sur la plateforme (même si ça ne fait "que" 37% du catalogue total). Donc si vous écoutez un morceau au hasard sur Spotify, y'a 99,6% de chances qu'il soit dans l'archive.

Pour trier tout ça, ils ont utilisé la métrique "popularité" de Spotify qui va de 0 à 100. Ainsi, pour les morceaux avec une popularité supérieure à 0, ils ont récupéré quasiment tout en qualité originale (OGG Vorbis 160kbit/s) et pour les morceaux à popularité 0 (soit ~70% du catalogue, des trucs que personne n'écoute), ils ont réencodé en OGG Opus 75kbit/s pour gagner de la place… mais ils ne sont pas allés au bout de la longue traîne (trop de stockage pour trop peu de gain, et pas mal de contenu “bof” à popularité 0). Pour 99% des gens ça sonne pareil, même si je sais que les audiophiles vont me tuer dans les commentaires ^^.

En regardant les stats qu'ils ont produit à partir de ce qui a été scrappé, les 3 morceaux les plus populaires (Die With A Smile de Lady Gaga et Bruno Mars, BIRDS OF A FEATHER de Billie Eilish, et DtMF de Bad Bunny) ont été streamés plus de fois que les 20 à 100 millions de morceaux les moins populaires combinés. Bon, ils précisent aussi que la popularité est très dépendante du moment, donc ce top est un peu arbitraire mais ça montre à quel point la longue traîne est looooongue sur les plateformes de streaming...

Après le problème avec la préservation musicale actuelle (ce qu'on retrouve sur les sites de Torrent par exemple), c'est qu'elle se concentre uniquement sur les artistes populaires et la qualité maximale (FLAC lossless). Du coup, y'a plein de musique obscure qui ne survit que si une seule personne décide de la partager. Et ces fichiers sont souvent mal seedés. Et c'est pour ça que je trouve l'approche d'Anna's Archive plutôt pas mal car elle consiste à archiver tout ce qui existe (ou presque), même en qualité "suffisante", plutôt que de se concentrer sur un sous-ensemble en qualité parfaite.

Et comme vous vous en doutez, tout est distribué via des torrents, avec les métadonnées déjà disponibles (moins de 200 Go compressés) et les fichiers audio qui arrivent progressivement par ordre de popularité. Note la base s'arrête à juillet 2025, donc tout ce qui est sorti après peut ne pas être là (même s'il y a quelques exceptions).

Bref, c'est la première archive de préservation musicale vraiment ouverte, que n'importe qui peut mirrorer s'il a assez de stockage et voilà comment grâce à l'aide de tout le monde, le patrimoine musical de l'humanité sera protégé pour toujours des catastrophes naturelles, des guerres, des coupes budgétaires et autres désastres... Par contre, pas sûr que ça la protège de la boulimie des IA génératives.

Merci à Lilian pour l'info !

Source

File-Hunter - L'archive MSX qui aurait rendu fou votre moi de 1985

Par : Korben
16 décembre 2025 à 12:02

Vous vous souvenez du MSX, cette machine 8 bits des années 80 qui a fait rêver toute une génération avant que le PC ne vienne tout écraser ? Hé bien y'a un site qui a décidé de préserver absolument TOUT ce qui existe pour cette plateforme, et quand je dis tout, c'est vraiment tout.

File-Hunter , c'est le projet d'un gars passionné, Arnaud de Klerk , qui depuis 1999 (oui, ça a 25 ans ce truc) archive méticuleusement chaque fichier, chaque jeu, chaque démo, chaque magazine lié à l'écosystème MSX. Le site existe même depuis l'époque où FONY créait encore du contenu pour les systèmes 8-bit . Donc autant dire que c'est une vraie institution de la préservation rétro.

Le site propose au téléchargement pas moins de 24 catégories de contenu. Des jeux évidemment (MSX1, MSX2, MSX2+, Turbo-R), mais aussi des démos, des disk-magazines, des émulateurs, des polices, des systèmes d'exploitation, des ROMs système, du contenu technique, des manuels, des livres, des magazines numérisés, de la musique, des programmes, du code source... Bref, si ça concerne le MSX et que ça existe quelque part sur Terre, y'a de fortes chances que ce soit archivé ici.

Côté formats, c'est la fête du slip vintage ^^ puisqu'on y trouve des fichiers DMK pour les disquettes, des TSX et CAS pour les cassettes, des conversions ROM, des fichiers VHD pour les disques virtuels, et même des trucs en LaserDisc. Y'a aussi des versions modifiées de jeux, des traductions anglaises, des cheats, des maps, des sauvegardes... C'est vraiment le genre de collection qui fait baver n'importe quel collectionneur.

Et le truc cool c'est que vous pouvez jouer directement dans votre navigateur sans rien installer . En effet, le site propose une plateforme de jeux MSX et même Amiga jouables online, optimisée pour téléphones et tablettes. Et pour ceux qui préfèrent tout récupérer d'un coup, pas la peine de tout scraper (vous finiriez pas vous faire bannir votre IP), car y'a un torrent complet disponible et même une appli Android. Le fichier allfiles.txt pèse plus de 3 Mo, ce qui vous donne une idée de l'ampleur du bazar.

Bref, si vous avez un petit coup de nostalgie MSX ou si vous voulez découvrir ce que c'était que le gaming avant que tout devienne du photorealistic next-gen, File-Hunter est votre destination du jour. Et comme d'hab, un grand merci à Lorenper pour le partage !

❌
❌