Ceci est un guide rapide sur la façon d'utiliser un Raspberry Pi pour lire sans fil des platines vinyles modernes avec sortie USB sur une installation Sonos. Ce guide se concentre sur ce cas d'utilisation, mais peut également être utilisé pour diffuser vers d'autres haut-parleurs, car nous allons créer un flux MP3 lisible par pratiquement tout ce qui peut diffuser de l'audio.
Nous avons d’abord besoin d’une nouvelle installation de Raspbian sur une carte SD. Comme nous n’avons pas besoin de graphiques ou de quoi que ce soit de spécial, nous pouvons utiliser Raspbian Lite. De plus, nous n’avons pas besoin de beaucoup d’espace disque, probablement tout ce qui est de 2 Go et plus est bon. Après l'installation, je n'utilise que 1,5 Go de ma carte SD.
Pour mon installation, j'ai utilisé la version Buster
de Raspbian OS Lite (septembre 2022). Vous pouvez essayer une version plus récente, mais celle-ci n'a pas été testée.
Installez Raspberry Pi OS Lite (64 bits) via le Raspberry Pi Imager https://www.raspberrypi.com/software/
Cliquez sur l'icône d'engrenage pour les options avancées
vinyl
,Branchez votre Raspberry Pi, connectez-vous dessus et exécutez ce qui suit
smorton@homepc: ~ $ ssh [email protected]
vinyl@vinyl: ~ $ cd /tmp && wget https://github.com/stephencmorton/USB-Turntables-to-Sonos-with-RPi/archive/master.zip && unzip master.zip && USB-Turntables-to-Sonos-with-RPi-master/scripts/install.sh
Passez directement à « Vérifier si la cuisson à la vapeur fonctionne ».
Maintenant, connectez la platine vinyle au Raspberry Pi, via USB. Vous pouvez utiliser la commande arecord -l
pour vérifier si votre appareil a été détecté. Le mien montre ceci :
vinyl@vinyl:~ $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: CODEC [USB AUDIO CODEC], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
Notez le numéro de carte 1
dans mon cas (« card: 1
») ou mieux encore le nom (« CODEC » ci-dessus). C'est probablement la même chose pour vous, mais si cela diffère, vous devrez peut-être vous en souvenir et le modifier en conséquence au cours des étapes suivantes. Vous l'utiliserez dans le fichier asound.conf
ci-dessous.
ALSA est le sous-système audio Linux de niveau le plus bas. Nous configurons l'entrée pour que darkice puisse l'utiliser.
Comme la plupart des platines vinyles USB n'ont pas de contrôle de volume matériel et que le volume d'entrée est bloqué à environ la moitié de ce qu'il devrait être, nous devons ajouter un contrôle de volume logiciel. Créez le fichier /etc/asound.conf et modifiez-le pour ajouter le contenu suivant :
pcm.dmic_hw {
type hw
# card 1
# For some reason, the card number can jump around. But this will get it by name
card CODEC
channels 2
# format S16_LE # Use this if "format dat" doesn't work. Only difference is S16_LE = 44.1 kHz sampling vs dat = 48 kHz
format dat
}
pcm.dmic_mm {
type mmap_emul
slave.pcm dmic_hw
}
pcm.dmic_sv {
type softvol
slave.pcm dmic_hw
control {
name "Boost Capture Volume"
# card 1
# For some reason, the card number can jump around. But this will get it by name
card CODEC
}
min_dB -5.0
max_dB 20.0
}
Ensuite, exécutez cette commande pour actualiser l'état alsa et afficher également les VU Meters pour tester le volume d'entrée :
arecord -D dmic_sv -r 48000 -f dat -c 2 --vumeter=stereo /dev/null
(Il affichera un volume nul jusqu'à ce que vous jouiez quelque chose sur votre tourne-disque.)
Vous remarquerez peut-être que le volume est beaucoup trop faible. Si tel est le cas, vous pouvez utiliser alsamixer
pour modifier le volume. Appuyez sur F6
pour sélectionner le périphérique USB Turntable et appuyez sur TAB
jusqu'à ce que vous voyiez le curseur Boost. Je l'ai réglé sur 65
sur ma configuration, mais vous pourriez essayer. Assurez-vous de ne pas l'augmenter trop haut, sinon votre qualité sonore pourrait se dégrader en raison d'un écrêtage.
Exécutez les commandes suivantes :
sudo apt-get update
sudo apt-get install -y darkice icecast2
Sélectionnez Yes
pour configurer Icecast. Vous pouvez tout laisser par défaut, mais si vous modifiez le mot de passe, assurez-vous de modifier le mot de passe dans la configuration lors des étapes suivantes.
Darkice est le logiciel qui enregistre à partir du périphérique USB et l'encode en MP3. Pour le configurer, créez ou éditez le fichier /etc/darkice.cfg, et mettez-le dedans :
# this section describes general aspects of the live streaming session
[general]
duration = 0 # duration of encoding, in seconds. 0 means forever
bufferSecs = 1 # size of internal slip buffer, in seconds
reconnect = yes # reconnect to the server(s) if disconnected
realtime = yes # run the encoder with POSIX realtime priority (default==yes)
rtprio = 4 # scheduling priority for the realtime threads (default==4)
# this section describes the audio input that will be streamed
[input]
device = dmic_sv # OSS DSP soundcard device for the audio input
sampleRate = 48000 # other settings have crackling audo, esp. 44100
bitsPerSample = 16 # bits per sample. try 16
channel = 2 # channels. 1 = mono, 2 = stereo
# this section describes a streaming connection to an IceCast2 server
# there may be up to 8 of these sections, named [icecast2-0] ... [icecast2-7]
# these can be mixed with [icecast-x] and [shoutcast-x] sections
[icecast2-0]
bitrateMode = cbr
format = mp3
bitrate = 320
server = vinyl
port = 8000
mountPoint = turntable.mp3
name = Turntable
description = Music from our record player
# highpass = 18
# lowpass = 20000
url = http://vinyl.local:8080/
genre = vinyl
public = no
password = hackme # or whatever you set your icecast2 password to
Pour plus d'informations sur ce fichier et les paramètres que vous pouvez modifier, consultez la page de manuel darkice.cfg.
Darkice et icecast utilisent des commandes init.d à l'ancienne. Modernisons-les pendant que nous y sommes.
# Remove old-fashioned init.d controls
sudo update-rc.d darkice remove
sudo update-rc.d icecast2 remove
Copiez le code ci-dessous dans /etc/systemd/system/darkice.service et /etc/systemd/system/icecast2.service. Puis cours
sudo systemctl enable icecast2
sudo systemctl enable darkice
darkice.service
[Unit]
Description =DarkIce Icecast Network Audio Streamer
After =icecast.target
[Service]
Type =simple
ExecStart =/usr/bin/darkice -c /etc/darkice.cfg
ExecReload =/bin/kill -HUP $MAINPID
User =root
Group =root
# WorkingDirectory=/usr/share/icecast2/
Restart =always
RestartSec =5
[Install]
WantedBy =multi-user.target
icecast2.service
[Unit]
Description =Icecast Network Audio Streaming Server
After =network.target
[Service]
Type =simple
ExecStart =/usr/bin/icecast2 -c /etc/icecast2/icecast.xml
ExecReload =/bin/kill -HUP $MAINPID
User =icecast2
Group =icecast
# WorkingDirectory=/usr/share/icecast2/
Restart =always
[Install]
WantedBy =multi-user.target
Redémarrez le Raspberry Pi, pour vérifier si tout est correctement configuré et parce que nous avons modifié certains fichiers de configuration et garantissons que Darkice fonctionne.
Ouvrez maintenant votre navigateur et accédez à http://vinyl.local:8000
(port icecast2 par défaut). Vous devriez y voir un Mountpoint Mount Point /turntable.mp3
. Sinon, revenez en arrière et vérifiez si vous avez tout fait comme décrit. Cliquez avec le bouton droit sur le lien M3U (en haut à droite) et copiez l'adresse du lien. Ceci est votre URL Steam. Vous pouvez l'ouvrir dans iTunes, VLC, votre navigateur ou sur tout autre client audio prenant en charge le streaming.
Ouvrez l'application Sonos sur votre bureau (cela ne fonctionnera pas sur mobile). Accédez à Manage
> Add Radio Station...
et collez l'URL de votre flux. Vous pouvez choisir le nom de votre choix. Pour lire le flux sur votre Sonos, accédez à Radio by TuneIn
> My Radio Stations
. Votre flux devrait y apparaître ! Faites un clic droit pour ajouter à vos favoris si vous le souhaitez ! :-) Vous pouvez commencer à jouer à partir d'appareils mobiles, vous ne pouvez tout simplement pas y ajouter de flux réseau.
Pour accélérer le temps de démarrage de votre Raspberry Pi, vous pouvez
Ceci est laissé comme exercice au lecteur, mais il existe divers extraits de code dans fastboot.sh à consulter ainsi que divers liens dans des notes techniques et des références.
Voir aussi