aboutsummaryrefslogtreecommitdiff
path: root/content/Perso/2013-06-22-platine.rst
blob: 0bb90bee53e4eb8a8bc1bceebb39f50e7236cb2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
.. -*- mode: rst -*-
.. -*-  coding: utf-8 -*-

##############################
Écouter ses vinyles sous linux
##############################

:date: 2013-06-22
:tags: Libre, DIY
:logo: /images/platine/tete_75.jpeg
:summary: |summary|

.. default-role:: literal

.. image:: {static}/images/platine/lecture_150.jpg
    :width: 150
    :class: floatright
    :alt: Tête de lecture

|summary|

.. |summary| replace::
    Peut-être avez-vous dans votre grenier une platine vinyle qui prend la
    poussière, ainsi qu'une collection de disques dans des cartons. Je vous
    propose aujourd'hui de ressuciter la platine et récupérer le son sur votre
    ordinateur. Il n'y a pas que les platines USB qui peuvent être branchées
    sur un PC, même la plus ancienne peut faire l'affaire !

Merci pulseaudio
================

Pour toutes les opérations, nous allons nous servir de pulseaudio qui va
grandement nous simplifier les traitements à réaliser.

Pour faire les tests, nous allons nous servir de `pavucontrol` qui permet de
contrôler les flux d'entrée, et d'afficher un audiomètre (pratique pour voir
sur quelle entrée provient notre son…)

System-wide
-----------

Il est nécessaire que pulseaudio tourne en continu pour rediriger le son dès
que la platine tourne. Ça n'est pas le cas par défaut, pour des raisons de
sécurité, et il va être nécessaire de modifier la configuration pour ça. En
effet, le comportement par défaut est de se lancer pour la durée nécessaire,
via dbus, puis se couper une fois que la demande est terminée. Il n'existe pas
à ma connaissance de modèle de platine capable de lancer demander à pulseaudio
de se mettre en route, on va donc laisser pulseaudio tourner en continu.

.. admonition:: Attention !

    Il n'est pas conseillé de lancer pulseaudio en tant que démon du système.
    Comme le wiki l'indique, cela ne devrait être utilisé que dans des cas
    particuliers (serveur de son accessible uniquement par le réseau).

    De nombreuses failles de sécurité ont été trouvés utilisant pulseaudio pour
    obtenir un accès root à la machine.

    Dans notre cas nous n'avons pas le choix, puisque la platine ne correspond
    à aucun utilisateur du système, mais vous êtes prévenus !

Le wiki explique la procédure_ en détail, je ne rentre pas dans le détail : les
explications données sur le wiki sont assez claires, et je préfère ne pas
inciter à trop jouer avec votre système…

.. _procédure: http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

Branchement
===========

.. image:: {static}/images/platine/jack2rca.jpg
    :class: floatleft
    :alt: jack to rca

Il est fort probable que votre platine dispose d'une sortie RCA. Pour le
connecter à l'ordinateur, il va nous falloir un adaptateur, comme celui montré
en photo. Pour ma part, je l'ai trouvé, non pas chez les vendeurs de disques,
mais dans une grande surface de bricolage, sinon, vous pourrez le commander
facilement sur internet.

.. image:: {static}/images/platine/line-in.jpg
    :class: floatright
    :alt: line-in

Nous n'avons plus qu'à brancher notre cablage, de préférence sur l'entrée
line-in de l'ordinateur, qui est faite pour récupérer du son directement depuis
un autre appareil (moins de parasites). Il s'agit normalement d'une prise bleue
sur la carte son.

Le volume de sortie de platine est suffisant pour être lu directement par
l'ordinateur, à partir de ce moment là, vous pouvez commencer à mettre un
disque, et jouer avec `audacity` pour récupérer le son !

Par défaut, l'entrée audio de pulseaudio est la prise micro, il va falloir
modifier l'entrée dans l'interface de contrôle pour la faire passer sur
l'entrée line-in.

L'égalisation RIAA
==================

Ça y est, le son tourne ! Mettez donc un disque que vous connaissez, et
surprise ; mais où sont les basses ?? En fait, pour éviter au sillon de sauter
à cause de l'amplitude des basses, un traitement est fait au son avant de le
presser : les basses sont atténuées, et les aigües sont augmentées — c'est
l'`égalisation RIAA`_

.. _égalisation RIAA: https://fr.wikipedia.org/wiki/%C3%89galisation_RIAA

Lors de la lecture nous allons avoir besoin d'effectuer la coure de traitement
inverse pour restaurer le son :

.. image:: {static}/images/platine/riaa.jpg
    :alt: La courbe riaa

Pulseaudio ne sait pas égaliser le son nativement, mais il est possible de
passer le son dans des filtres qui vont faire le boulot pour nous. En effet, il
existe une norme, ladspa_, qui permet de créer des plugins sous linux pouvant être
utilisés par n'importe quelle application. (Qui a dit que la gestion du son était
bordelique_ sous linux ? |:-)|)

.. _ladspa: http://www.ladspa.org/
.. _bordelique: http://blogs.adobe.com/penguinswf/2007/05/welcome_to_the_jungle.html

.. |:-)| image:: {static}/images/icons/face-smile.png

Le plugin que nous allons utiliser est celui de l'égaliseur multibande, son
petit nom étant `mbeq_1197`. (Dans Debian, vous le trouverez dans le paquet
`swh-plugin`).

D'après sa page de manuel, il prend des corrections à appliquer pour les
fréquences suivantes : 50Hz, 100Hz, 156Hz, 220Hz, 311Hz, 440Hz, 622Hz, 880Hz,
1250Hz, 1750Hz, 2500Hz, 3500Hz, 5KHz, 10KHz et 20KHz. Il ne sera donc pas
possible de reproduire la courbe RIAA parfaitement, mais en comparant avec la
courbe ci-dessus, vous pourrez constater qu'il s'agit d'une approximation, qui
couvre la totalité de fréquence audible, et qui permet de générer un son
suffisament fidèle à l'oreille.

Il ne reste plus qu'à calculer les valeurs pour chaque fréquence, sortez vos
calculettes ! Bon, on va faire plus simple, il existe des `feuilles de
calculs`_ toutes prêtes qui n'attendent plus que nous rentrions nos fréquences.

.. _feuilles de calculs: http://www.bonavolta.ch/hobby/en/audio/riaa.htm

Pour finir
==========

Après cette longue introduction, nous allons pouvoir créer notre paramétrage
facilement. Il suffit d'éditer le fichier de configuration de pulseaudio et
rajouter les lignes suivantes :

.. code-block:: ini

    # Crée un filtre qui applique l'égalisation RIAA
    load-module module-ladspa-sink sink_name=riaa_eq master=0 plugin=mbeq_1197 label=mbeq control=17.035,13.177,10.079,7.641,5.347,3.367,1.731,0.514,-0.655,-1.915,-3.611,-5.619,-8.121,-13.645,-19.531

    # Prend l'entrée et la redirige vers notre filtre
    load-module module-loopback source=1 sink=riaa_eq

Le paramètre `source=1` peut être différent sur votre configuration. La valeur
peut être trouvée grace à la commande suivante :

.. code-block:: console

    $ pactl list sources | grep -E "Source|Description"
    Source #0
    	Description : Monitor of Audio interne Stéréo analogique
    Source #1
    	Description : Audio interne Stéréo analogique
    Source #2
    	Description : Monitor of LADSPA Plugin Multiband EQ on Audio interne Stéréo analogique

Voilà, à travers ces deux lignes, nous venons de connecter notre platine vinyle
sur les enceintes du PC et donner au son le dynamisme qui lui faut !

Pour ma part, je suis bluffé par le fait que des disques ayant presque quarante
ans d'âge puissent encore être écouté parfaitement sur un ordinateur conçu bien
longtemps après. Aujourd'hui la musique passe majoritairement par des lecteurs
mp3, bien souvent disposant d'une connexion propriétaire et *volontairement*
non standard. Pensez-vous qu'en 2060, il sera possible de brancher un IPod sur
un ordinateur neuf pour en lire la musique ? Qui prend les paris ?