Merci pour le fork
Les grandes lignes de la compression MP3 :
1) Appelons S(t) le signal d'origine, et S'(t) le signal reconstitué après compression et décompression. Le but est évidemment que, pour l'oreille humaine, S'(t) soit le plus "ressemblant" possible à S(t).
Une artifice classique de notation est d'écrire S'(t) = S(t) + B(t), avec B(t) = S'(t) - S(t). Ça revient à dire que le signal reconstitué est composé du signal "idéal" d'origine S(t), plus une composant perturbatrice B(t) qui correspond à la distortion/la déformation/le bruit/(votre terme préféré) introduit par la compression/décompression.
2) Un signal peut être découpé en plusieurs signaux, chacun correspondant à une bande "étroites" de fréquences (c'est ce qu'on voit sur un analyseur graphique comme celui de Winamp par exemple). Il peut être reconstitué en faisant l'addition de ces signaux.
3) Pour l'oreille humaine, les sons forts masquent les sons faibles (par exemple, quelqu'un qui chuchotte s'entend très bien dans le silence, mais est imperceptible dans une pièce bruyante). Plus exactement, ça se passe comme si chaque bande de fréquence projetait une "ombre" sur les bandes voisines : si une autre bande se trouve dans l'"ombre" (fréquence pas trop éloignée et amplitude inférieure à un seuil), elle n'est pas entendue. La forme de l'"ombre" dépend de la fréquence et de l'amplitude de la bande principale.
4) Une manière simple de compresser, aussi utilisée par le JPEG, est la quantification. Ça consiste à diminuer la précision des valeurs en arrondissant ; pour une quantification linéaire, on peut le faire simplement en éliminant les bits les moins significatifs, ce qui diminue l'espace occupé. Évidemment, plus la quantification est forte, plus l'erreur introduite par l'arrondi est importante.
5) Comment on applique tout ça : chaque bande de fréquences est quantifiée séparément, et la distortion B(t) est la somme des erreurs d'arrondi. Le but du compresseur est de choisir les niveaux de quantification pour que l'amplitude de l'erreur d'arrondi de chaque bande reste en-dessous (ou ne dépasse pas trop, dans le cas où on compresse à bas débit) celle des "ombres" projetée par les bandes voisines. Si ce critère est vérifié pour toute les bandes, en théorie les erreurs arrondis introduites par la compression ne s'entendent pas.
(bon c'est un résumé rapide, l'algorithme complet est nettement plus complexe, mais le principe de base est là)