Indholdsfortegnelse:

Spil den samme musik i flere rum: 3 trin
Spil den samme musik i flere rum: 3 trin

Video: Spil den samme musik i flere rum: 3 trin

Video: Spil den samme musik i flere rum: 3 trin
Video: Benny Jamz, Gilli, Kesi - Ibiza ft. B.O.C 2024, November
Anonim
Spil den samme musik i flere rum
Spil den samme musik i flere rum

Hej allesammen, Jeg ved ikke om dig, men jeg kan godt lide at have den samme musik på tværs af hele min lejlighed uden at dreje lyden for højt. Så efter lidt research om dette problem besluttede jeg at konstruere flere højttalere, der alle var forbundet via wifi til den samme musikserver for at afspille den samme musik samtidigt i flere rum og især på badeværelset.

Systemet er baseret på GStreamer -teknologien, som er grundlaget for nogle fantastiske software som VLC og på højttaler med wifi -funktion ved hjælp af en Raspberry Pi.

Trin 1: Byg en højttaler til badeværelset

Bygger en højttaler til badeværelset
Bygger en højttaler til badeværelset
Bygger en højttaler til badeværelset
Bygger en højttaler til badeværelset
Bygger en højttaler til badeværelset
Bygger en højttaler til badeværelset

Deleliste:

  • en højttaler til badeværelset
  • en 2W forstærker (arbejder på 12v)
  • en Raspberry Pi Zero (arbejder på 5v)
  • en Pimoroni Phat DAC
  • et SD -kort
  • en TÆND/SLUK -knap
  • en 12v strømadapter + et kompatibelt stik
  • en DC/DC step-down (12v-> 5v)
  • en elboks
  • nogle kabler

Konstruktionen er ret ligetil.

På den elektroniske side skal du følge dette ASCII -diagram.

  • DC -stik ON/OFF -knapforstærker
  • Tænd/sluk-knap DC/DC trin-ned Raspberry Pi
  • Raspberry Pi Phat DAC forstærkerhøjttaler

På den mekaniske side skal du klippe alle de huller, der er nødvendige i elboksen, sætte alt indeni, og det er alt.

Ved hjælp af denne teknik kan du oprette alle slags højttalere, du ønsker.

Trin 2: Softwaresiden

Hele softwaresiden er baseret på open source multimedierammen, GStreamer. Jeg brugte kun Linux, men det findes på forskellige operativsystemer, så jeg forestiller mig, at alle kan tilpasses til andre operativsystemer.

Til start skal du installere Raspbian Lite på Pi, PHAT DAC og GStreamer 1.0 med de "gode" plugins. På den computer, der bruges som musikserver, har du brug for den samme GStreamer. Jeg vil ikke uddybe disse dele, fordi andre har gjort dette bedre end mig. Den sidste ting, der er nødvendig, er, at Pi og musikserveren skal forbindes til det samme netværk via kabel eller wifi.

For at teste, om GStreamer er korrekt installeret, kan du bruge disse kommandolinjer.

På højttaleren:

$ 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, nyttelast = (int) 96 '! rtpL16 tilbagebetal! lydkonvertering! autoaudiosink

På pc'en:

$ gst-launch-1.0 audiotestsrc! lydkonvertering! audio/x-raw, format = "(streng) S16BE", layout = "(streng) sammenflettet", kanaler = 1, rate = 44100! rtpL16pay! udpsink host = RASPBERRYPI_IP port = 5000

Når du har sat den gode IP -adresse i stedet for "RASPBERRYPI_IP", skal du høre en sinusformet lyd på højttaleren. Det er ikke noget, du gerne vil høre i lang tid, så lad ikke lydstyrken være for høj.

En eller anden forklaring: PC'en producerer den sinusformede lyd ved hjælp af "audiotestsrc", "audioconvert! Audio/x-raw, format =" (string) S16BE ", layout =" (string) interleaved ", channel = 1, rate = 44100" convert lyden i det gode format forstået af "rtpL16pay", der skaber lydpakkerne og til sidst "udpsink" sender pakkerne ved hjælp af UDP -protokollen. På højttaleren er den den samme, men omvendte, "udpsrc" genopretter lydfluxen, "rtpL16depay" de-pakker og "audioconvert! Autoaudiosink" konverterer lyden, så den matcher formatet på det automatiske lydkort og afspiller den naturligvis.

Så nu hvor de grundlæggende ting virker, er det tid til at gå videre. Målet er at opsnappe lyden af et program for at sende det gennem netværket.

- Vi opretter en falsk output

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

- Vi forbinder et input til det falske output (tavse den valgte applikation (input))

$ pacmd list-synks (output-liste)

$ pacmd list-sink-inputs (inputliste)

$ pacmd move-sink-input %input %output (erstat %input og %output med en af de tilsvarende lister)

- Vi sætter lydkortet maksimalt

$ pactl set-sink-volume 0 100%

- Vi tester på pc'en måden at gendanne det falske output (gendanne lyden)

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

Du bør igen høre lyden af det program, du har valgt.

Store! Nu er det tid til at gå til de sidste kommandolinjer. Her er kommandolinjerne for 2 højttalere, hvor lyden også afspilles af pc'en.

På hver højttaler:

$ 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, nyttelast = (int) 96 '! rtpL16betaling! lydkonvertering! autoaudiosink

På pc'en:

$ gst-launch-1.0 pulsesrc device = multiHP.monitor! lydkonvertering! audio/x-raw, format = "(streng) S16BE", layout = "(streng) sammenflettet", kanaler = 2, rate = 44100! rtpL16pay! tee navn = t t. ! kø! udpsink host =%addrpi1 port = 5000 t. ! kø! udpsink host =%addrpi2 port = 5000 t. ! kø! lydkonvertering! autoaudiosink

Trin 3: Konklusion

Dette instruerbare er bare det første skridt til et komplet projekt. Det var kun for at forklare princippet. Nu kan du automatisere ved at lave noget script på Raspberry Pi -boot og på pc'en. Du kan tilpasse GStreamer -kommandoen afhængigt af dit behov. Jeg ændrede personligt min tidligere instruerbare (BRAND NEW OLD RADIO) for at bruge den som højttaler. Der er et uendeligt antal ting at gøre for at forbedre dette multi-room lydsystem. Især alle højttalerne er ikke synkroniseret, så du har en vis variation, når du skifter fra et værelse til et andet.

Jeg håber, at du vil prøve at forbedre dette instruerbare.

Tøv ikke med at stille spørgsmål, hvis du har brug for detaljer.

Godt tinker!

Anbefalede: