Enregistrement de mp3 en temps réel

ArticleCategory: [Artikel Kategorie]

Applications

AuthorImage:[Bild des Autors]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in nl Philip de Groot

nl to en Philip de Groot

en to fr Iznogood

AboutTheAuthor:[Über den Autor]

Il va bientôt obtenir son doctorat à l'université de Nijmegen avec pour sujet la chimiométrie. Il aime travailler avec Linux et écrit régulièrement ses expériences.

Abstract:[Zusammenfassung]

Cet article traite de l'enregistrement de la musique. Contrairement au "truc" de LinuxFocus de Janvier 2001, le 'coûteux' format WAV n'est pas utilisé. Le format mp3, beaucoup plus petit, est utilisé pour l'enregistrement direct. Il est possible d'obtenir 24 heures d'enregistrement en qualité CD avec ce format.

ArticleIllustration:[Titelbild des Artikels]

[Illustration]

ArticleBody:[Der eigentliche Artikel]

Introduction

Habituellement, il est impossible de convertir directement du son vers du mp3 en temps réel. La procédure à suivre est :

L'enregistrement rapide d'un fichier wave prend beaucoup d'espace disque (100 MB pour 10 minutes de musique stéréo en qualité CD). Cela limite la capacité de stockage de ce type de musique. Un codeur mp3 est capable de convertir le fichier wave de 100 MB en un fichier de 10 MB en qualité standard mp3 (128 kbps, stéréo). Cette propriété permet l'enregistrement numérique de la musique pendant 24 heures, sans aucune interruption! 24 heures, ça fait 60*24 = 1440 minutes, en utilisant seulement 1,4 GB (1440 MB) d'espace disque !!! J'ai utilisé cette propriété pour enregistrer les 80 top 300, transmis par la radio Loostad (quelques pages Anglaises sont aussi disponibles). L'enregistrement n'a été interrompu qu'une fois car le programme d'enregistrement de mp3 s'arrête automatiquement au bout de 24 heures et cela n'était pas documenté... mais l'enregistrement était très bon! Dans cet article, je présente le logiciel utilisé, je propose des alternatives pour réaliser des enregistrements temps réels de mp3 et je fournis quelques outils disponibles en téléchargement.

La procédure

Ci-après, deux méthodes pour faire des enregistrements mp3 temps réel, stéréo et de qualité CD sont détaillées :

'Mpegrec' fait la même chose que 'sox | lame' mais des paramétrages différents sont déjà définis. L'utilisateur n'a rien à faire pour enregistrer, sinon d'installer 'Lame'! Je vous conseille d'utiliser 'mpegrec'. Néanmoins, rappelez-vous que ce programme s'arrête au bout de 24 heures!!! De plus, un bug dans la programmation donne des temps d'enregistrement erronés: le temps d'enregistrement indiqué par l'utilisateur n'est pas correctement utilisé. La plupart du temps, c'est beaucoup plus court!

Comment utiliser mpegrec

Utiliser 'mpegrec' est facile. Dans un xterm, tapez 'mpegrec -b 128 -o ./test.mp3' et c'est parti! Explication des différentes options :
-b Utilise 128 kbps pour le taux de transfert mp3. La valeur standard dans 'mpegrec' est à 192, ce qui est étrange (et beaucoup trop haut). La plupart des fichiers mp3 ont un taux constant de 128 kbps.
-o Nom du fichier de sortie. Dans cet exemple : ./test.mp3. Si aucun fichier n'est défini, tout est envoyé vers la sortie standard ('stdout'). Habituellement, c'est le xterm dans lequel le programme est exécuté. Tout le codage du mp3 est affiché à l'écran au lieu d'être stocké dans un fichier...

Attention:
Vérifiez que les paramètre de mixage soient corrects. Si ce n'est pas le cas, rien ne sera enregistré! La bonne source d'enregistrement doit être sélectionnée et les contrôles de volumes doivent être réglés au maximum.

Comment utiliser 'sox | lame'

Saisissez la commande suivante dans un xterm:
sox -t ossdsp -w -s -r 44100 -c 2 /dev/dsp -t raw - | lame -x -m s - ./test.mp3
Explication des options fournies :
sox Le programme d'enregistrement : le son est enregistré en utilisant le 'line-in' de la carte son.
-t ossdsp L'entrée du son a pour origine les pilotes de son OSS. Ces pilotes sont inclus dans le noyau Linux si le support standard du son est défini.
-w Le type de bit d'échantillonnage est 16 bits long word (si vous ne comprenez pas : ne vous inquiétez pas, ce n'est pas important).
-s La 'donnée échantillonnée' est 'signed linear' - linéaire signé - (si vous ne comprenez pas : pas de panique, ce n'est pas important).
-r 44100 La fréquence d'échantillonnage est de 44100 Hz (qualité CD).
-c 2 Enregistrement à partir de deux canaux (stéréo).
/dev/dsp C'est le périphérique d'échantillonnage du son : le périphérique linux qui fournit les données d'enregistrement. Tous les périphériques, ports, disques, etc sont accessibles par le répertoire '/dev'. Dans linux, le flux du son est accessible à partir de '/dev/dsp'. En fait, il est même possible d'obtenir votre fichier son en utilisant la commande suivante : 'cat /dev/dsp >test.wav' (ne fonctionne que si les paramètres de mixage sont corrects!!!).
-t raw La sortie est faite de données 'brutes' (inchangées, directement à partir de la carte son).
- Utilise la sortie standard, symbolisée par '-'
lame Le programme de codage : le son enregistré est envoyé à 'lame' pour la conversion mp3.
-x 'Forcer le byte-swapping pour l'entrée '. Je ne connais pas la fonction précise de cette option mais sans elle, la procédure ne fonctionne tout simplement pas (avant que je ne la trouve!).
-m s Encodage au format mp3 stéréo. En standard, 'lame' encode en 'joint-stereo': seules les DIFFERENCES entre les deux canaux du son sont encodées. Le résultat est une meilleure compression mais la qualité est moins bonne.
- L'entrée est 'stdin'. C'est correct pour notre exemple.
./test.mp3 Le nom du fichier mp3 final.

Le mixer

Des paramètres de mixage corrects sont très importants. Le mixer détermine la source d'enregistrement. En standard, le mixer KDE est paramétré comme suit :
The standard KDE mixer-settings
Figure 1: Les paramètres standards du mixer KDE.

La Figure 1 décrit que le microphone est la source d'enregistrement courante. Pour notre propos, une source externe est connectée à l'ordinateur en utilisant le connecteur 'line-in' de la carte son. La source d'enregistrement doit être 'line-in'. Si le pointeur de la souris est positionné sur le canal line-in du mixer KDE, le résultat d'un clic droit dans le menu est décrit dans la Figure 2:

Selecting the correct recording-source
Figure 2: sélectionner la source d'enregistrement correcte.

Bien sûr, 'RecSource' est sélectionnée pour définir le 'line-in' de la carte son comme source d'enregistrement. Utilisez la même procédure pour que le micro ne soit plus source d'enregistrement : vous ne tenez pas à une source de bruit additionnelle!

Attention:

Si 'line-in' n'est pas sélectionné comme source d'enregistrement, aucun son n'est obtenu à partir de 'line-in' (même si vous pouvez entendre la musique)!!! N'oubliez pas de paramétrer le 'line-in' à 'unmute'. La figure 2 le décrit bien : vous pouvez définir 'line-in' sur mute, donc il est actuellement sur 'unmuted'.

The KDE-mixer is set correctly
Figure 3: Le mixer KDE est paramétré correctement.

Précautions pour obtenir de bons enregistrements

Il y a de grandes chances que vous travailliez avec XWindow et que 'mpegrec' soit lancé dans XWindow. Ce n'est pas une bonne idée pour les deux raisons suivantes :

La remarque ci-dessus indique que les enregistrements peuvent être meilleurs si aucun environnement graphique n'est présent. Cela signifie aussi que le shell Bash doit être utilisé (un shell en mode texte). Cette approche a certaines conséquences :

Ces deux problèmes peuvent être résolus assez facilement. Le premier problème, le support de son, est résolu comme suit :
'modprobe -k sb'

Cette commande charge le module 'sb', qui installe ma carte son (une SoundBlaster AWE 64). Si vous ne connaissez pas le module qui doit être installé, regardez dans '/etc/conf.modules' (SuSE) ou '/etc/modules.conf' (selon votre distribution). Pour moi, la partie carte son est la suivante :

alias char-major-14 sb
pre-install sb /sbin/modprobe "-k" "adlib_card"
pre-install sb /sbin/modprobe "-k" "awe_wave"
options sb io=0x220 irq=5 dma=1 dma16=5 # mpu_io=0x330
options adlib_card io=0x388 # FM synthesizer
post-install sb /usr/bin/sfxload "/win98/Program Files/Creative/ctsnd/sfbank/synthgs.sbk"
Votre carte son est toujours définie en 'alias char-major-14' (si les pilotes OSS standard sont utilisés, ce qui est habituellement le cas). Cette ligne est terminée par 'sb', donc vous savez que la commande 'modprobe -k sb' initialise les services de la carte son.


Le second problème est de sélectionner le 'line-in' sur votre carte son avec un programme de mixage basé sur le texte. J'utilise le programme 'aumix'. Si la commande 'aumix' est exécutée dans Bash, le mixer démarre en mode interactif. Dans ce mode, les paramètres peuvent être contrôlés et changés en un clin d'oeil, voir la Figure 4.

De tekst-georienteerde mixer 'aumix'
Figure 4: Le mixer 'aumix' en mode texte.

Vous pouvez sélectionner les différentes sources d'enregistrement avec les touches fléchées. Les touches '<' ou '>' sélectionnent le volume (gauche) ou la balance (droite). Les touches '+' et '-' augmentent et diminuent le volume de la source actuellement sélectionnée. 'm' mute ou unmute la source courante. Si la source courante est sélectionnée comme source d'enregistrement, un 'R' rouge est affiché sur la gauche de cette source de volume. Si la source n'est utilisée que pour du playback, un 'P' vert est affiché. Presser 's' sauve les paramètres courants dans '~/.aumixrc'. Ces paramètres sont activés très facilement au démarrage suivant avec la commande : 'aumix -l'.


Pour automatiser la procédure ci-dessus, j'ai écrit un petit script : './mrec'. Ce script contient les lignes suivantes :
modprobe -k sb
aumix -l
mpegrec -b 128 -o ./test.mp3

Le son est initialisé, 'line-in' est sélectionné comme source d'enregistrement et 'mpegrec' démarre immédiatement l'enregistrement.

Installer mpegrec

J'ai fait 2 versions de 'mpegrec' : une version Windows (win32) et une version Linux. De plus amples informations, à propos de 'mpegrec' peuvent être trouvées sur http://www.netwaysglobal.com/mpegrec/. Seuls les fichiers sources et les versions win 32 compilées peuvent être trouvées ici. Il n'y a pas de page contenant plus d'informations, mais vous pourrez en trouver ici.

Les fichiers 'lame' et les conseils d'installation peuvent être trouvés .

Installation sous Linux


Note: Je ne vais pas parler de l'installation sous windows mais vous aurez besoin de la version windows de 'lame'!!! La version windows de 'mpegrec' est seulement disponible pour ceux qui sont intéressés. Une bonne documentation est incluse dans le fichier .tar.gz-file (winzip). Le lien de la page d'accueil peut aussi aider.

Installer lame

Deux versions de 'lame' sont aussi disponibles, une version Windows (win32) et une version Linux . La page d'accueil de 'lame' est sur http://www.mp3dev.org/mp3/. Je ne vais pas expliquer l'installation de la version windows. La documentation incluse et le lien de la page d'accueil sont utiles pour les utilisateurs de windows.

Installation sous Linux

Installer sox

'Sox' est un programme pour enregistrer, convertir ou éditer du son. Par exemple, un écho peut être ajouté au fichier son. Lisez les pages de manuel de 'sox' ('man sox') pour plus d'informations. Les conversions que peut faire 'sox' sont : convertir un fichier wave vers un fichier .au (le format audio standard de SUN) et vice-versa. Cette possibilité est parfois très utile! La version de 'sox' est disponible ici et la page d'accueil est à http://home.sprynet.com/~cbagwell/sox.html.

Installation sous Linux

Autres problèmes

J'ai trouvé deux autres problèmes :

Cron

C'est un problème spécifique à SuSE. Un processus lourd est utilisé pour mettre à jour les pages de manuel et pour enlever les vieux fichiers log. Ce processus est très utile mais il utilise beaucoup trop de ressouce CPU pour l'enregistrement mp3. J'ai renommé 'cron' pendant l'enregistrement, pour qu'il ne puisse pas être trouvé et exécuté. Après l'enregistrement, 'cron' reprend son nom! Utilisez la commande suivante pour renommer 'cron':

mv /usr/sbin/cron /usr/sbin/cron.backup

Il y a des chances pour que 'cron' se situe ailleurs dans d'autres distributions Linux. Vous pouvez le trouver avec la commande :

which cron

Vérifiez si 'cron' est nécessaire à d'autres tâches! Sur une machine de bureau Linux, cela ne doit pas être un problème.

Le problème du pilote de son

Ce problème a été résolu en utilisant les pilotes de son d'Alsa. Utilisez la documentation Alsa (non incluse dans les fichiers de pilotes/utilitaires) pour obtenir des instructions sur l'installation de ces pilotes. Il est souhaitable de ne pas utiliser ces pilotes à moins que des problèmes ne se présentent.