Sommario:

Riproduci la stessa musica in più stanze: 3 passaggi
Riproduci la stessa musica in più stanze: 3 passaggi

Video: Riproduci la stessa musica in più stanze: 3 passaggi

Video: Riproduci la stessa musica in più stanze: 3 passaggi
Video: Come usare Alexa in più stanze 2024, Luglio
Anonim
Riproduci la stessa musica in più stanze
Riproduci la stessa musica in più stanze

Ciao a tutti, Non so voi, ma a me piace avere la stessa musica in tutto il mio appartamento senza alzare troppo il volume. Quindi, dopo un po' di ricerche su questo problema, ho deciso di costruire più altoparlanti tutti collegati via wifi allo stesso server musicale in modo da riprodurre la stessa musica contemporaneamente in più stanze e in particolare nel bagno.

Il sistema è basato sulla tecnologia GStreamer che è la base di alcuni fantastici software come VLC e su altoparlanti con funzionalità Wi-Fi utilizzando un Raspberry Pi.

Passaggio 1: costruire un altoparlante per il bagno

Costruire un altoparlante per il bagno
Costruire un altoparlante per il bagno
Costruire un altoparlante per il bagno
Costruire un altoparlante per il bagno
Costruire un altoparlante per il bagno
Costruire un altoparlante per il bagno

Elenco delle parti:

  • un altoparlante a prova di bagno
  • un amplificatore da 2W (funzionante a 12v)
  • un Raspberry Pi Zero (funzionando su 5v)
  • un Pimoroni Phat DAC
  • una scheda SD
  • un pulsante ON/OFF
  • un alimentatore da 12 V + una spina compatibile
  • un DC/DC step-down (12v->5v)
  • una scatola elettrica
  • alcuni cavi

La costruzione è piuttosto semplice.

Sul lato elettronico, segui questo diagramma ASCII.

  • Spina CC Pulsante ON/OFF amplificatore
  • Pulsante ON/OFF DC/DC step-down Raspberry Pi
  • Altoparlante amplificatore DAC Raspberry Pi Phat

Dal lato meccanico, fai tutti i fori necessari nella scatola elettrica, metti tutto dentro e basta.

Usando questa tecnica, puoi creare tutti i tipi di altoparlanti che desideri.

Passaggio 2: il lato software

Tutto il lato software è basato sul framework multimediale open source, GStreamer. Ho usato solo Linux ma esiste su diversi OS, quindi immagino che tutto possa essere adattato per altri OS.

Per cominciare, devi installare Raspbian Lite sul Pi, il PHAT DAC e il GStreamer 1.0 con i plugin "buoni". Sul computer utilizzato come server musicale, è necessario lo stesso GStreamer. Non descriverò in dettaglio quelle parti perché altri l'hanno fatto meglio di me. L'ultima cosa necessaria è che il Pi e il server musicale devono essere collegati alla stessa rete via cavo o Wi-Fi.

Per verificare se GStreamer è installato correttamente, puoi usare quelle righe di comando.

Sull'altoparlante:

$gst-launch-1.0 udpsrc port=5000 caps='application/x-rtp, media=(string)audio, clock-rate=(int)44100, encoding-name=(string)L16, encoding-params=(string)1, canali=(int)1, payload=(int)96' ! rtpL16depay! audioconvertitore! autoaudiosink

Sul PC:

$gst-launch-1.0 audiotestsrc ! audioconvertitore! audio/x-raw, format="(string)S16BE", layout="(string)interleaved", channel=1, rate=44100 ! rtpL16pay! udpsink host=porta RASPBERRYPI_IP=5000

Dopo aver inserito l'indirizzo IP corretto invece di "RASPBERRYPI_IP", dovresti sentire un suono sinusoidale sull'altoparlante. Non è qualcosa che ti piacerebbe sentire per molto tempo, quindi non alzare troppo il volume.

Qualche spiegazione: il PC produce il suono sinusoidale usando "audiotestsrc", "audioconvert ! audio/x-raw, format="(string)S16BE", layout="(string)interleaved", channel=1, rate=44100" convert il suono nel buon formato compreso da "rtpL16pay" che crea i pacchetti audio e infine "udpsink" invia i pacchetti utilizzando il protocollo UDP. Sull'altoparlante, è lo stesso ma invertito, "udpsrc" recupera il flusso audio, "rtpL16depay" de-packet e "audioconvert! autoaudiosink" converte il suono in modo che corrisponda al formato della scheda audio automatica e, naturalmente, lo riproduce.

Quindi, ora che le cose di base funzionano, è tempo di andare oltre. L'obiettivo è intercettare il suono di un'applicazione per inviarlo attraverso la rete.

- Creiamo un output falso

$pactl load-module module-null-sink sink_name=multiHP

- Colleghiamo un input all'output falso (silenzia l'applicazione selezionata (input))

$pacmd list-sink (elenco degli output)

$pacmd list-sink-inputs (lista degli input)

$pacmd move-sink-input %input %output (sostituisci %input e %output con uno degli elenchi corrispondenti)

- Mettiamo la scheda audio al massimo

$pactl imposta-sink-volume 0 100%

- Testiamo sul PC il modo per recuperare l'output falso (recuperare il suono)

$gst-launch-1.0 pulsesrc device=multiHP.monitor ! audioconvertitore! autoaudiosink

Dovresti sentire di nuovo il suono dell'applicazione che hai selezionato.

Grande! Ora è il momento di passare alle righe di comando finali. Ecco le righe di comando nel caso di 2 altoparlanti con l'audio riprodotto anche dal PC.

Su ogni Altoparlante:

$gst-launch-1.0 udpsrc port=5000 caps='application/x-rtp, media=(string)audio, clock-rate=(int)44100, encoding-name=(string)L16, encoding-params=(string)2, carico utile=(int)96' ! rtpL16depay! audioconvertitore! autoaudiosink

Sul PC:

$gst-launch-1.0 pulsesrc device=multiHP.monitor ! audioconvertitore! audio/x-raw, format="(string)S16BE", layout="(string)interleaved", channel=2, rate=44100 ! rtpL16pay! nome della maglietta = t t. ! fare la coda ! udpsink host=%addrpi1 porta=5000 t. ! fare la coda ! udpsink host=%addrpi2 port=5000 t. ! fare la coda ! audioconvertitore! autoaudiosink

Passaggio 3: conclusione

Questo istruibile è solo il primo passo per un progetto completo. Era solo per spiegare il principio. Ora puoi automatizzare creando alcuni script all'avvio di Raspberry Pi e sul PC. Puoi adattare il comando GStreamer a seconda delle tue necessità. Ho personalmente modificato il mio precedente istruttore (BRAND NEW OLD RADIO) per poterlo utilizzare come speaker. C'è un numero infinito di cose da fare per migliorare questo sistema audio multi-room. In particolare, tutti gli altoparlanti non sono sincronizzati, quindi si ha qualche variazione quando si passa da una stanza all'altra.

Spero che proverai a migliorare questo istruibile.

Non esitare a fare domande se hai bisogno di dettagli.

Bravo armeggiare!

Consigliato: