* * *
LE MPEG AUDIO
* * *


 Bienvenue dans le monde fabuleux du son, de la musique et du numérique. Je sais, ce genre d'entrée en matière peut paraître bien lourd, mais comme il faut bien commencer un article par une première phrase, autant qu'elle soit le plus explicite possible. Après tout, si ce genre de baratin ne vous intéresse pas plus que cela, vous pouvez vous rendre au chapitre suivant.

 Après un petit exposé sur le pourquoi du comment du MPEG audio, nous nous intéresserons plus particulièrement au MPEG audio sur nos machines à nous, Falconistes, c'est à dire ... le Falcon.

MPEG

 Tout d'abord, de manière générale, qu'est-ce que le standard MPEG ? Le MPEG (pour Motion Picture Expert Group) est un standard qui a été conçu, si je ne m'abuse, par l'Institut de standardisation national Américain (ANSI), et qui définit un certain nombre d'algorithmes de compression et de codage pour tout ce qui concerne la vidéo animée. Les trois versions de ce standard, du plus abordable (financièrement et techniquement), le MPEG-1, au plus délirant (mêmes critères) MPEG-3, en passant par l'efficace MPEG-2, sont utilisées dans différentes applications. Le MPEG-1 est le format utilisé par les CD-I vidéo, qui commence un peu à dater actuellement. Il est également utilisé pour de nombreuses applications dans le domaine du multimédia sur les ordinateurs (un certain nombre de visualiseurs MPEG-1 est disponible sur Falcon). Le MPEG-2 est le nouveau standard à la mode, c'est en gros un MPEG-1 avec plein d'extensions. C'est le standard retenu pour la compression vidéo sur DVD (le Digital Versatile Disc, le successeur du compact-disc en fait). Enfin, le MPEG-3 n'ayant toujours pas été finalisé par ses concepteurs, il n'est pas encore vraiment utilisé.

MPEG AUDIO

 Nous nous intéresserons exclusivement à la compression MPEG-1, dans sa partie audio. Le standard MPEG-1 audio est composé de trois types de compression différents, qui sont : le MPEG-1 audio Layer I, le MPEG-1 audio Layer II, et enfin le MPEG-1 audio Layer III, le Layer II étant une évolution du Layer I, et le Layer III une évolution du Layer II. Un rapide descriptif des 3 types s'impose. Les trois types de compression sont en fait le même, mais le stockage des données s'effectue assez différemment selon les cas. La compression s'effectue en découpant l'échantillon sonore en petits morceaux de taille variable selon le type de compression. Ces sous- échantillons subissent alors une transformée rapide de Fourier (FFT), ce qui n'est autre qu'une transformation d'une fonction d'intensité en fonction du temps, en fonction d'intensité en fonction de la fréquence. A partir de là, le but du jeu est de faire tenir ces blocs de fréquences dans le moins d'espace possible. De passionnantes recherches scientifiques ont été effectuées, de manière à diminuer la précision de ces fréquences, voire de les supprimer, en évitant au maximum de perdre de la qualité à la restitution. En fait, la compression effectuée se sert de certaines caractéristiques de l'oreille humaine. En effet, un auditeur, dans certains cas, n'est pas capable d'entendre certaines fréquences, ou les entend si faiblement, qu'elles en deviennent négligeables, ou peuvent être codées avec peu de précision sans que l'on ne sente de baisse de qualité. Trois exemples :

 Il est possible de choisir la qualité de compression effectuée, ce qui permet d'adapter le rapport qualité/gain de place selon les besoins. La qualité s'exprime en débit : c'est la quantité d'informations stockées par unité de temps, en MPEG il s'agit du kilobit par seconde (kb/s). Ceci permet de connaître à l'avance la place que l'échantillon compressé occupera au final.

Le processus de compression fonctionne de la façon suivante :
 Découpage de l'échantillon en blocs de taille fixe.  Pour chaque bloc :
 Pour chaque bloc, FFT, puis découpage de cette représentation intensité/fréquence en 32 bandes de fréquence de largeur fixe.
 Pour chaque bande, application d'un ® modèle psychoacoustique ¯ qui va déterminer, selon des algorithmes de calcul assez savants, le nombre de bits qui vont être utilisés pour coder l'intensité des fréquences appartenant à la bande concernée.
 Quand l'analyse est terminée pour chaque bande, on stocke le bloc compressé, avec en en-tête un tableau comprenant le nombre de bits occupé par chaque bande.

MPEG-1 AUDIO Layer I, II et III

 Pour les curieux, voici un petit descriptif décrivant les différentes caractéristiques des 3 types de codage entre les modes Layer I, Layer II et Layer III.

Le Layer I est un mode de compression ne requérant pas énormément de puissance de calcul, bien que sur un Falcon on risque de trouver le temps un peu long, si on s'amuse à compresser des fichiers audio de ce type. Dans ses caractéristiques, c'est l'application bête et méchante de l'algorithme que j'ai décrit dans ses grandes lignes quelques lignes au dessus.

Le Layer II, mis à part quelques différences (de taille (haha, c'est le cas de le dire (haha, je suis vraiment très fort quand je me mets à sortir des blagues (bon, il faudrait que je m'y remette à cet article (parce que les lecteurs vont commencer à s'ennuyer (si je puis dire (bon, je sais j'abuse (donc j'arrête (sage décision))))))))) est assez similaire au Layer I, mais comprend quelques améliorations non négligeables par rapport à son ancêtre (diable, je me mets à utiliser le même jargon que les programmeurs en C++ (a quand la compression sonore orientée objet ?)). Tout d'abord le codage, qui optimise assez bien la place occupée par le tableau de tailles des bandes de fréquences. Ensuite, la taille des blocs élémentaires est multipliée par 2, ce qui augmente le temps de compression, mais diminue pas mal la place occupée sur disque. Enfin, l'algorithme du modèle psychoacoustique est disponible en deux versions différentes : le modèle 1 qui est celui du Layer I, mais qui gère des tailles de blocs différentes, et le modèle 2 qui effectue une analyse beaucoup plus précise, ce qui permet d'augmenter la qualité de restitution de l'échantillon compressé, en occupant la même place.
Le Layer III, enfin, ajoute deux étapes supplémentaires à l'algorithme de compression du Layer II : la première, située entre la décomposition en sous-bandes et le modèle psychoacoustique, c'est l'application à chaque sous-bande d'un algorithme appelé MDCT (pour Modified Discrete Cosine Transform). Je ne détaillerai pas ici le fonctionnement de l'algorithme de MDCT, mais sachez que sa particularité est de générer une bande de même taille que la sous-bande concernée, à la particularité près que les plus gros coefficients se trouvent obligatoirement au début du bloc, et les plus faibles en fin de bloc, ce qui permettra, lors du codage (deuxième étape supplémentaire), de compresser une fois de plus ces blocs, par un algorithme de compression tout à fait classique : l'algorithme de Huffman, qui a la particularité de stocker les octets les plus fréquemment rencontrés sur un nombre minimal de bits. Et comme, grâce à la MDCT, on obtient très souvent un nombre important d'octets nuls en fin de bande, la compression est souvent très efficace.

LE MPEG AUDIO SUR FALCON

 Il existe un ® player ¯ de fichiers MPEG audio sur Falcon, il s'agit du player MP2 du groupe NoCrew. Il permet la décompression et la restitution en temps réel d'un fichier MPEG-1 Layer I ou Layer II, le tout effectué par le DSP, donc demandant très peu de puissance du CPU ! C'est-y pas beau, ça ? Vous remarquerez que le Layer III n'est pas géré, car bien qu'il y ait abondance de ce genre de fichiers audio dans l'univers PC (fichiers .MP3), la décompression demande un grosse puissance de calcul supplémentaire pour décompresser ces fichiers. Tant pis pour nous. Mais revenons au player MP2. Celui-ci lit sans broncher les fichiers en mode Layer I et II, ce qui paraît assez normal, vu la similitude, au niveau de la décompression, entre ces deux modes. Il permet le rééchantillonnage en temps réel de la fréquence de l'échantillon (généralement 44,1 kHz) vers une fréquence accessible au système audio du Falcon, au prix d'une baisse sensible de qualité, et aussi de puissance de calcul. Le pied absolu est atteint si vous utilisez une horloge externe (style Bclock), le player n'effectuera pas de rééchantillonnage, ce qui améliorera grandement la qualité de restitution, tout en permettant de jouer des échantillons de qualité supérieure. Sur un Falcon de base, il est possible de jouer des MP2 jusqu'à une qualité de 128 kb/s, avec rééchantillonnage. On peut augmenter la qualité si on adjoint une horloge externe sur le Falcon. Je n'ai pas pu tester ceci sur mon Falcon, car mon DSP tourne en permanence à 50 MHz, ce qui fausserait un peu les calculs... Sur mon Falcon accéléré (DSP à 50 MHz, CPU et BUS à 25), on peut jouer des échantillons en 192, 224, voire 256 kb/s sans problème. Cependant, la qualité optimale de restitution ne sera de toutes façons atteinte que grâce à l'horloge externe.

 En ce qui concerne les programmes de compression, il n'en existe à ma connaissance qu'un seul : il s'agit d'une implémentation en C de l'algorithme de compression MPEG audio, on peut la trouver à l'adresse ftp suivante : ftp://ftp.iuma.com/audio_utils/converters/source/mpegaudio.tar.Z
 Ce programme permet la compression en MPEG-1 Layer I et II, avec les modèles psychoacoustiques 1 et 2 du mode Layer II, et avec la possibilité de définir soi-même le taux de compression. Attention, c'est du C, et une machine équipée d'un coprocesseur arithmétique est plus qu'indispensable. Les sources sont compilables avec le compilateur GNU C, fourni en standard avec les distributions de MiNT et Linux. Niveau temps de calculs, mieux vaut ne pas être pressé, si vous avez un fichier audio à compresser, profitez de la nuit, ou d'une sortie dans la journée. En effet, pour compresser une MP2 de 5 minutes, quelque soit la qualité, mon Falcon 25 MHz + Copro 50 MHz m'a quand même occupé pas loin de 12 heures de temps de calcul ... Pour une autre de 8 minutes, il m'a fallu 20 heures. CQFD. Ceci dit, le résultat vaut franchement le coup.
Petite astuce, vous avez sûrement dans votre entourage des connaissances qui possèdent un PC (vous savez, la machine qui plante 266 millions de fois par seconde)... Dans ce cas, utilisez-le à bon escient (pour une fois !), et faites-lui faire des compressions audio, au lieu de jouer à pan, boum, t'es mort en réseau, comme font 99% des utilisateurs de PC... Vous gagnerez un temps certain, et votre Falcon aussi !

Bon amusement.



Zerkman / Trisomic Development