BlueVinyl Pi

Ultimo aggiornamento: 10-09-2017

Come usare il Raspberry per rendere bluetooth-compatibile il tuo vecchio giradischi!

Da un pò di tempo ho rispolverato il vecchio giradischi di mio padre, sarà anche per colpa della moda che ha riportato popolare  i vinili.

Poichè il vecchio amplificatore è un bel pò ingombrante, ho pensato di sfruttare il mio vecchio RaspberryPi 2 come pre-amplificatore e ci ho collegato anche una cuffia Bluetooth, così da rendere il mio giradischi il più moderno e fruibile possibile.

Preparazione

Per fare una prima prova vi servono:

  • Adattatore RCA a Jack 3,5mm
  • Scheda Audio USB di buona qualità
  • RaspberryPi 3 o Raspberry 2 con Bluetooth USB

Iniziamo a vedere se si sente l’audio sulla TV.
Collegate l’adattatore RCA al giradischi e alla scheda audio USB, quest’ultima collegata al Raspberry. Avviate il RaspberryPi, aprite una console e installate pulseaudio che serve per rilevare le schede audio esterne e non solo (su molte distro è già installato).
sudo apt-get install pulseaudio pulseaudio-bluetooth
Una volta installato avviatelo da console
pulseaudio -D

Riprodurre l’audio su Linux non è facile come su Windows; con Linux si deve prima avviare una registrazione e poi mandarla in output da qualche parte. Quindi prima di tutto bisogno vedere tutti i dispositivi per il recording (la penna USB) che sono stati collegati al Raspberry
arecord -l
Segnatevi il numero delle “card” (nel mio caso 1) e quello del “subdevice” (nel mio caso è 0) della penna USB collegata.
Fatto ciò per riprodurre l’audio basta mettete su un vinile e digitare:
arecord -D plughw:1,0 -f dat | aplay -f dat
Se dalla vostra TV si sente la musica  state a buon punto!

Altri suggerimenti:

  • Vi consiglio di installare Pavucontrol, il controller audio di PulseAudio,  ottimo per regolare l’audio. Da avviare dopo che è iniziata la riproduzione, poichè può creare problemi col comando arecord
    sudo apt-get install pavucontrol
  • Per fermare il tutto basta digitare ctrl+c (per sapere a cosa servono i comandi basta digitare “man arecord”, “man aplay” ecc)
  • Nel caso non si senta la musica, consiglio di lanciare pavucontrol e controllare il volume dell’audio, soprattuto di “Capture” della scheda audio USB.

Colleghiamo le cuffie Bluetooth

Ora non vi rimane che riprodurre l’audio sulle vostre cuffie Bluetooth: prima di tutto avviate la procedura di accoppiamento dalle cuffie e  nel Raspberry fate questo:


Una volta che i dispositivi si sono accoppiati si deve far in modo che il dispositivo di riproduzione dell’audio sia la cuffia Bluetooth: pulsante destro sull’icona dell’audio e selezioniate il dispositivo.

A questo punto ri-aprite la console Linux e  digitate ancora
pulseaudio -D #nel caso si fosse chiuso
arecord -D plughw:1,0 -f dat | aplay -f dat

Se pulseaudio vi da errori significa che è ancora avviato (quindi è una cosa buona).

Alla fine il risultato dovrebbe essere questo qui:

Automatizzare il tutto con Python

Fare questa procedura  è un pò noiosa, aumatizzare il tutto  sarebbe una belle cosa. L’idea è quella di sentire un pò di musica avviando solo l’accoppiamento dal dispositivo Bluetooth e  uno script dal Raspberry.
Lo script è compatibile per python3, solo che a causa di Bluetoothctl (vedi sotto) si deve usare python2, a meno che non lo modificate.
Prima di tutto si devono installare questi moduli Python sulla vostra distribuzione Linux: libbluetooth-dev e pulsectl. Su Raspbian basta digitare

sudo apt-get install libbluetooth-dev #pulseaudio già dovrebbe essere installato
sudo pip install pybluez
sudo pip install pulsectl

Infine scaricate il modulo Bluetoothctl in una directory e commentate in __init__ la riga che inzia con “out =“. Nella stessa mettete questo mio script

Prima di avviare lo script è consigliato chiudere il gestore Bluetooth (lo stesso che abbiamo usato per collegare i dispositivi) che può creare problemi.
Avviate il tutto da console (se non commentate quella riga, dovete avviare con sudo che altrimenti lo script genera errori quando avvia pulseaudio)
python autoconnect.py
Se tutto va per il verso giusto dovreste sentire la musica dalle vostre cuffie!

Lo script è ovviamente perfezionabile e se non vi piacciono tutti quegli output che vengono mostrati potete togliere i print prima delle chiamate a bctl.get_output

A questo punto non rimane che augurarvi buon ascolto!