Innehållsförteckning:

Spela samma musik i flera rum: 3 steg
Spela samma musik i flera rum: 3 steg

Video: Spela samma musik i flera rum: 3 steg

Video: Spela samma musik i flera rum: 3 steg
Video: Victor Leksell - Svag (Lyrics) 2024, November
Anonim
Spela samma musik i flera rum
Spela samma musik i flera rum

Hej allihopa, Jag vet inte om dig men jag gillar att ha samma musik i hela min lägenhet utan att vrida ljudet för högt. Så efter lite forskning om detta problem bestämde jag mig för att konstruera flera högtalare som alla är anslutna via wifi till samma musikserver för att spela samma musik samtidigt i flera rum och i synnerhet i badrummet.

Systemet är baserat på GStreamer -tekniken som är basen för en fantastisk programvara som VLC och högtalare med wifi -funktion med en Raspberry Pi.

Steg 1: Bygg en högtalare för badrummet

Bygga en högtalare för badrummet
Bygga en högtalare för badrummet
Bygga en högtalare för badrummet
Bygga en högtalare för badrummet
Bygga en högtalare för badrummet
Bygga en högtalare för badrummet

Del lista:

  • en badrumssäker högtalare
  • en 2W förstärkare (arbetar på 12v)
  • en Raspberry Pi Zero (arbetar på 5v)
  • en Pimoroni Phat DAC
  • ett SD -kort
  • en PÅ/AV -knapp
  • en 12v nätadapter + en kompatibel kontakt
  • en DC/DC step-down (12v-> 5v)
  • en elbox
  • några kablar

Konstruktionen är ganska enkel.

På den elektroniska sidan följer du detta ASCII -diagram.

  • DC -kontakt PÅ/AV -knappförstärkare
  • PÅ/AV-knapp DC/DC steg-ner Raspberry Pi
  • Raspberry Pi Phat DAC förstärkare högtalare

På den mekaniska sidan, skär alla hål som behövs i elboxen, lägg allt inuti och det är allt.

Med denna teknik kan du skapa alla slags högtalare du vill ha.

Steg 2: Programvarusidan

Hela mjukvarusidan är baserad på multimedia -ramverket med öppen källkod, GStreamer. Jag använde bara Linux men det finns på olika operativsystem, så jag föreställer mig att alla kan anpassas för andra operativsystem.

Till att börja med måste du installera Raspbian Lite på Pi, PHAT DAC och GStreamer 1.0 med de "bra" pluginsna. På datorn som används som musikserver behöver du samma GStreamer. Jag kommer inte att beskriva dessa delar eftersom andra har gjort det bättre än jag. Det sista som behövs är att Pi och musikservern måste anslutas till samma nätverk via kabel eller wifi.

För att testa om GStreamer är korrekt installerad kan du använda dessa kommandorader.

På högtalaren:

$ 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, kanaler = (int) 1, nyttolast = (int) 96 '! rtpL16depay! ljudomvandlare! autoaudiosink

På datorn:

$ gst-launch-1.0 audiotestsrc! ljudomvandlare! audio/x-raw, format = "(string) S16BE", layout = "(string) interleaved", kanaler = 1, rate = 44100! rtpL16betala! udpsink -värd = RASPBERRYPI_IP -port = 5000

När du har lagt den bra IP -adressen istället för "RASPBERRYPI_IP", bör du höra ett sinusformat ljud på högtalaren. Det är inget du kommer att vilja höra på länge, så lägg inte volymen för högt.

Någon förklaring: PC: n producerar det sinusformade ljudet med "audiotestsrc", "audioconvert! Audio/x-raw, format =" (string) S16BE ", layout =" (string) interleaved ", channel = 1, rate = 44100" convert ljudet i det bra format som förstås av "rtpL16pay" som skapar ljudpaketen och slutligen "udpsink" skickar paketen med UDP -protokollet. På högtalaren är det samma men inverterade, "udpsrc" återställer ljudflödet, "rtpL16depay" de-paket och "audioconvert! Autoaudiosink" konverterar ljudet för att matcha formatet på det automatiska ljudkortet och spelar naturligtvis det.

Så nu när de grundläggande grejerna fungerar är det dags att gå längre. Målet är att fånga upp ljudet av en applikation för att skicka den via nätverket.

- Vi skapar en falsk produktion

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

- Vi ansluter en ingång till den falska utmatningen (tysta den valda applikationen (ingången))

$ pacmd list-sink (utgångslista)

$ pacmd list-sink-ingångar (ingångslista)

$ pacmd move-sink-input %input %output (ersätt %input och %output med en av motsvarande listor)

- Vi sätter ljudkortet på max

$ pactl set-sink-volume 0 100%

- Vi testar på datorn sättet att återställa den falska utmatningen (återställ ljudet)

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

Du bör höra ljudet från det program du har valt igen.

Bra! Nu är det dags att gå till de sista kommandoraderna. Här är kommandoraderna för 2 högtalare där ljudet också spelas av datorn.

På varje högtalare:

$ 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, nyttolast = (int) 96 '! rtpL16depay! ljudomvandlare! autoaudiosink

På datorn:

$ gst-launch-1.0 pulsesrc device = multiHP.monitor! ljudomvandlare! audio/x-raw, format = "(string) S16BE", layout = "(string) interleaved", channel = 2, rate = 44100! rtpL16betala! tee namn = t t. ! kö! udpsink -värd =%addrpi1 -port = 5000 t. ! kö! udpsink -värd =%addrpi2 -port = 5000 t. ! kö! ljudomvandlare! autoaudiosink

Steg 3: Slutsats

Detta instruerbara är bara det första steget till ett komplett projekt. Det var bara för att förklara principen. Nu kan du automatisera genom att göra lite manus på Raspberry Pi -boot och på datorn. Du kan anpassa GStreamer -kommandot beroende på ditt behov. Jag har personligen ändrat min tidigare instruerbara (HELT NYA GAMLA RADIO) för att kunna använda den som högtalare. Det finns oändligt många saker att göra för att förbättra detta ljudsystem med flera rum. I synnerhet är alla högtalare inte synkroniserade, så du har lite variation när du byter från ett rum till ett annat.

Jag hoppas att du kommer att försöka förbättra detta instruerbara.

Tveka inte att ställa frågor om du behöver detaljer.

Bra pyssel!

Rekommenderad: