RaspberryPi et carte-son Wolfson : convertir un vinyle en MP3

L’Ancien m’a parlé d’une époque où, pour écouter le dernier album des Beatles, il fallait se rendre au magazin de musique du coin, acheter le vinyle, rentrer chez soi, et, très délicatement, déballer le vinyle, le placer sur le tourne disque, finalement, avec une infime précaution, déposer l’aiguile sur le vinyle. A cette époque, il était très facile de copier un vinyle sur une cassette, pour pouvoir l’écouter dans la voiture, par exemple.

​Cette époque, je l’ai à peine connue. Mais le vinyle revient à la mode, et de nombreux groupes sortent leurs albums en édition vinyle. Et il se trouve que j’apprécie ce moyen de consommer la musique. Le vinyle, avec sa pochette, sont de beaux objets, et le fait se devoir le manipuler avec tant d’attention me pousse à respecter et à apprécier la musique beaucoup plus intensément que si elle provenait d’un simple fichier MP3.

Ma collection de vinyles commence à s’agrandire. Je possède la version CD et/ou digitale de la plupart de mes vinyles mais… pas de tous. J’aimerais cependant pouvoir les écouter en voiture ou au boulot. Comment faire?

L’Ancien me répondra que, de son temps, il suffisait de le copier sur une cassette mais… je n’ai pas de lecteur de cassette dans ma voiture. Le pti-jeune répondra qu’il lui faut un fichier MP3 pour pouvoir l’écouter sur son smartphone.

Voyons maintenant comment convertir un vinyle en MP3 en utilisant un RaspberryPi équipé d’une carte son Wolfson !

Introduction

Je possède un RaspberryPi modèle B (premier du nom) et la première version de la carte-son Wolfson. J’ai vu qu’une version de cette carte adaptée au modèle B+ était apparue (la Cirrus Logic Audio Card). Cette carte semble avoir sensiblement les mêmes spécifications, donc, je suppose qu’il devrait être possible d’apapter ces instructions à cette nouvelle carte.

J’utilise actuellement la distribution Raspbian fournie par Element14. Cette distribution contient le noyau adapté ainsi que les drivers permettant d’utiliser la carte son. Je ne sais pas si ces drivers ont maintenant été intégrés dans la distribution Raspbian officielle.

Mon setup est le suivant : le raspberrypi, via la carte son, est connecté d’un côté à mon ampli HiFi via la sortie SPDIF et de l’autre côté au pré-ampli de mon tourne-disque via l’entrée ligne. Mon but est de pouvoir soit enregistrer le son venant du tourne-disque dans un fichier MP3, ou de faire sortir ce son sur la sortie digitale.
  

Configuration des « chemins audio »

Plusieurs scripts sont à notre disposition pour configurer des « chemins audio » au niveau de la carte-son. En gros, cela configure le driver pour activer certaines fonctionnalités : lecture sur la sortie ligne, casque ou digitale, enregistrement depuis les micros,…

Les deux scripts qui nous intéressent sont les suivants:

  • SPDIF_playback.sh : Ce chemin permet de lire de l’audio et de le faire sortir sur la sortie SPDIF allant vers mon ampli.
  • Record_from_lineIn.sh : Ce chemin permet de capturer le signal audio entrant dans l’entrée ligne de la carte son.

Il suffit d’exécuter ces 2 scripts pour activer les bons chemins :

pi@raspberrypi ~ $  SPDIF_playback.sh

pi@raspberrypi ~ $  Record_from_lineIn.sh

Lire un fichier audio : aplay & mplayer

Le programme aplay est un lecteur audio pour le système de son Alsa, utilisé par défaut dans Raspbian. Il permet de lire un fichier audio très simplement:

pi@raspberrypi ~ $ aplay test.wav

Seulement, aplay ne supporte pas le format MP3. Utilisons donc mplayer :

pi@raspberrypi ~ $ mplayer test.mp3

Enregistrer de l’audio dans un fichier

Pour enregistrer, nous allons utiliser le programme arecord. Il est l’exact équivalent de aplay, si ce n’est qu’il enregistre de l’audio, plutôt que de le jouer. La commande suivante permet d’enregistrer le son provenant de l’entrée ligne (vu que nous l’avons activée précédement) vers le fichier ‘test.wav’:

pi@raspberrypi ~ $ arecord -f cd -t wav test.wav

Le WAV, c’est bien, mais c’est lourd. Pour encoder en MP3 à la volée, nous allons utiliser l’encodeur LAME. Pour ce faire, nous allons passer la sortie standard de arecord vers le programme LAME via un pipe:

pi@raspberrypi ~ $ arecord -f cd -t wav | lame -r  - out.mp3

Avec cette petite commande, il est donc possible d’encoder à la volée tout ce qui rentre dans l’entrée analogique de la carte-son.

Notez qu’il faudra installer le programme LAME pour que cette commande fonctionne:

pi@raspberrypi ~ $ sudo apt-get install lame

Entrer et sortir!

Il est aussi possible d’utiliser les deux chemins en même temps : capturer le son provenant de l’entrée ligne et le faire sortir sur la sortie digitale. L’intérêt peut sembler limité, mais cela pourrait prendre tout son sens lorsqu’il sera intégré dans une solution ‘multi-room’ basée sur le LogitechMediaServer, par exemple. Voici comment faire :

arecord -f cd -t raw | aplay -t raw -f cd

Le programme arecord lit l’audio depuis son entrée ligne, le transmet via sa sortie standard au programme aplay qui va le sortir sur la sortie digitale.

Pour finir

L’encodage en MP3 à la volée semble très intéressant, mais… peut-être pas! En effet, à moins de démarrer l’enregistrement en même temps que le tourne-disque et de l’arrêter à la fin de chaque chanson, il sera sans doute nécessaire de retravailler le fichier obtenu, pour éliminer les blancs superflus, découper les pistes,… Ces opérations sur un fichier MP3 dégraderont la qualité du fichier car il sera nécessaire de ré-encoder le fichier.

La meilleure solution consiste donc à enregistrer le contenu du vinyle au format WAV, et d’utiliser un PC pour découper les pistes, encoder les méta-données (titres, artistes, pochette,…) et effectuer l’encodage en MP3, FLAC ou n’importe quel autre format.

Notez que toutes ces explications sont valables pour n’importe qu’elle source audio sur n’importe quelles entrées et sortie de la carte son. De plus, vu que tout cela passe par ALSA, cela devrait être applicable avec n’importe quelle distribution Linux, sur n’importe quel système utilisant une carte son compatible ALSA.

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *