Παίξτε την ίδια μουσική σε πολλαπλά δωμάτια: 3 βήματα
Παίξτε την ίδια μουσική σε πολλαπλά δωμάτια: 3 βήματα
Anonim
Παίξτε την ίδια μουσική σε πολλά δωμάτια
Παίξτε την ίδια μουσική σε πολλά δωμάτια

Γεια σε όλους, Δεν ξέρω για εσάς, αλλά μου αρέσει να έχω την ίδια μουσική σε όλο το διαμέρισμά μου χωρίς να ακούω τον ήχο πολύ δυνατά. Έτσι, μετά από λίγη έρευνα σχετικά με αυτό το πρόβλημα, αποφάσισα να φτιάξω πολλά ηχεία όλα συνδεδεμένα μέσω wifi στον ίδιο διακομιστή μουσικής για να παίξω την ίδια μουσική ταυτόχρονα σε πολλά δωμάτια και συγκεκριμένα στο μπάνιο.

Το σύστημα βασίζεται στην τεχνολογία GStreamer που αποτελεί τη βάση κάποιου φοβερού λογισμικού όπως το VLC και σε ηχεία με δυνατότητα wifi χρησιμοποιώντας Raspberry Pi.

Βήμα 1: Δημιουργία ηχείου για το μπάνιο

Δημιουργία ηχείου για το μπάνιο
Δημιουργία ηχείου για το μπάνιο
Κατασκευή ηχείου για το μπάνιο
Κατασκευή ηχείου για το μπάνιο
Δημιουργία ηχείου για το μπάνιο
Δημιουργία ηχείου για το μπάνιο

Λίστα εξαρτημάτων:

  • αδιάβροχο ηχείο μπάνιου
  • ενισχυτής 2W (λειτουργεί σε 12v)
  • a Raspberry Pi Zero (δουλεύει σε 5v)
  • a Pimoroni Phat DAC
  • μια κάρτα SD
  • ένα κουμπί ON/OFF
  • μετασχηματιστή ρεύματος 12V + συμβατό βύσμα
  • ένα βήμα προς τα κάτω DC/DC (12v-> 5v)
  • ένα ηλεκτρικό κουτί
  • μερικά καλώδια

Η κατασκευή είναι αρκετά απλή.

Στην ηλεκτρονική πλευρά, ακολουθήστε αυτό το διάγραμμα ASCII.

  • Ενισχυτής κουμπιού ON/OFF βύσματος DC
  • Κουμπί ON/OFF DC/DC step-down Raspberry Pi
  • Ηχείο ενισχυτή Raspberry Pi Phat DAC

Από τη μηχανική πλευρά, κόψτε όλες τις τρύπες που χρειάζονται στο ηλεκτρικό κουτί, βάλτε τα πάντα μέσα και αυτό είναι όλο.

Χρησιμοποιώντας αυτήν την τεχνική, μπορείτε να δημιουργήσετε όλα τα είδη ηχείων που θέλετε.

Βήμα 2: Η πλευρά του λογισμικού

Όλη η πλευρά του λογισμικού βασίζεται στο πλαίσιο πολυμέσων ανοιχτού κώδικα, GStreamer. Χρησιμοποίησα μόνο Linux αλλά υπάρχει σε διαφορετικό λειτουργικό σύστημα, οπότε φαντάζομαι ότι όλα μπορούν να προσαρμοστούν για άλλα λειτουργικά συστήματα.

Για αρχή, πρέπει να εγκαταστήσετε το Raspbian Lite στο Pi, το PHAT DAC και το GStreamer 1.0 με τα "καλά" πρόσθετα. Στον υπολογιστή που χρησιμοποιείται ως διακομιστής μουσικής, χρειάζεστε το ίδιο GStreamer. Δεν θα αναφέρω λεπτομερώς αυτά τα μέρη γιατί άλλοι το έχουν κάνει καλύτερα από μένα. Το τελευταίο πράγμα που απαιτείται είναι ότι το Pi και ο διακομιστής μουσικής πρέπει να συνδεθούν στο ίδιο δίκτυο μέσω καλωδίου ή wifi.

Για να ελέγξετε αν το GStreamer είναι σωστά εγκατεστημένο, μπορείτε να χρησιμοποιήσετε αυτές τις γραμμές εντολών.

Στο ηχείο:

$ gst-launch-1.0 θύρα udpsrc = 5000 caps = 'application/x-rtp, media = (string) ήχος, clock-rate = (int) 44100, encoding-name = (string) L16, encoding-params = (string) 1, κανάλια = (int) 1, ωφέλιμο φορτίο = (int) 96 '! rtpL16 αποπληρωμή! ηχομετατροπή! αυτοακουστικο

Στον Η / Υ:

$ gst-launch-1.0 audiotestsrc! ηχομετατροπή! audio/x-raw, format = "(string) S16BE", layout = "(string) interleaved", κανάλια = 1, ποσοστό = 44100! rtpL16pay! udpsink host = θύρα RASPBERRYPI_IP = 5000

Αφού βάλετε την καλή διεύθυνση IP αντί για "RASPBERRYPI_IP", θα πρέπει να ακούσετε έναν ημιτονοειδή ήχο στο ηχείο. Αυτό δεν είναι κάτι που θα θέλατε να ακούτε για πολύ καιρό, οπότε μην βάζετε την ένταση πολύ δυνατά.

Κάποια εξήγηση: ο υπολογιστής παράγει τον ημιτονοειδή ήχο χρησιμοποιώντας "audiotestsrc", "audioconvert! Audio/x-raw, format =" (string) S16BE ", layout =" (string) interleaved ", κανάλια = 1, rate = 44100" convert ο ήχος σε καλή μορφή που κατανοείται από το "rtpL16pay" που δημιουργεί τα πακέτα ήχου και τελικά "udpsink" στέλνει τα πακέτα χρησιμοποιώντας το πρωτόκολλο UDP. Στο ηχείο, είναι το ίδιο αλλά ανεστραμμένο, το "udpsrc" ανακτά τη ροή ήχου, τα πακέτα "rtpL16depay" και "audioconvert! Autoaudiosink" μετατρέπει τον ήχο ώστε να ταιριάζει με τη μορφή της αυτόματης κάρτας ήχου και φυσικά τον παίζει.

Έτσι, τώρα που λειτουργούν τα βασικά, ήρθε η ώρα να προχωρήσουμε περαιτέρω. Ο στόχος είναι να υποκλαπεί ο ήχος μιας εφαρμογής προκειμένου να την στείλει μέσω του δικτύου.

- Δημιουργούμε μια ψεύτικη έξοδο

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

- Συνδέουμε μια είσοδο στην ψεύτικη έξοδο (σιωπή της επιλεγμένης εφαρμογής (είσοδος))

$ pacmd λίστα-νεροχύτες (λίστα εξόδων)

$ pacmd λίστα-νεροχύτες-είσοδοι (λίστα εισόδων)

$ pacmd move-sink-input %input %output (αντικατάσταση %input και %output με μία από τις αντίστοιχες λίστες)

- Βάζουμε την κάρτα ήχου στο μέγιστο

$ pactl set-sink-volume 0 100%

- Δοκιμάζουμε στον υπολογιστή τον τρόπο ανάκτησης της ψεύτικης εξόδου (ανάκτηση του ήχου)

$ gst-launch-1.0 pulsesrc συσκευή = multiHP.monitor! ηχομετατροπή! αυτοακουστικο

Θα πρέπει να ακούσετε ξανά τον ήχο της εφαρμογής που έχετε επιλέξει.

Μεγάλος! Τώρα ήρθε η ώρα να πάμε για τις τελευταίες γραμμές εντολών. Ακολουθούν οι γραμμές εντολών στην περίπτωση 2 ηχείων με τον ήχο που παίζει επίσης ο υπολογιστής.

Σε κάθε ηχείο:

$ gst-launch-1.0 θύρα udpsrc = 5000 caps = 'application/x-rtp, media = (string) ήχος, clock-rate = (int) 44100, encoding-name = (string) L16, encoding-params = (string) 2, ωφέλιμο φορτίο = (int) 96 '! rtpL16αποπληρωμή! ηχομετατροπή! αυτοακουστικο

Στον Η / Υ:

$ gst-launch-1.0 pulsesrc συσκευή = multiHP.monitor! ηχομετατροπή! audio/x-raw, format = "(string) S16BE", layout = "(string) interleaved", κανάλια = 2, ποσοστό = 44100! rtpL16pay! όνομα tee = t t. ! Ουρά ! udpsink host =%θύρα addrpi1 = 5000 t. ! Ουρά ! udpsink host =%θύρα addrpi2 = 5000 t. ! Ουρά ! ηχομετατροπή! αυτοακουστικο

Βήμα 3: Συμπέρασμα

Αυτό το διδακτικό είναι μόνο το πρώτο βήμα για ένα ολοκληρωμένο έργο. Wasταν μόνο για να εξηγήσει την αρχή. Τώρα μπορείτε να αυτοματοποιήσετε κάνοντας κάποιο σενάριο στην εκκίνηση Raspberry Pi και στον υπολογιστή. Μπορείτε να προσαρμόσετε την εντολή GStreamer ανάλογα με τις ανάγκες σας. Τροποποίησα προσωπικά το προηγούμενο εκπαιδευτικό μου (ΟΛΟΚΑΙΝΟΥΡΟΣ ΠΑΛΙΟΣ ΡΑΔΙΟΦΩΝΟΣ) για να το χρησιμοποιήσω ως ηχείο. Υπάρχουν άπειρα πράγματα που πρέπει να κάνετε για να βελτιώσετε αυτό το ηχοσύστημα πολλών δωματίων. Συγκεκριμένα, όλα τα ηχεία δεν είναι συγχρονισμένα, οπότε έχετε κάποια παραλλαγή όταν αλλάζετε από δωμάτιο σε δωμάτιο.

Ελπίζω ότι θα προσπαθήσετε να βελτιώσετε αυτό το διδακτικό.

Μη διστάσετε να κάνετε ερωτήσεις εάν χρειάζεστε λεπτομέρειες.

Καλό τσιγκούνη!

Συνιστάται: