Table des matières:
- Étape 1: Construire un haut-parleur pour la salle de bain
- Étape 2: le côté logiciel
- Étape 3: Conclusion
Vidéo: Jouez la même musique dans plusieurs pièces : 3 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Salut à tous, Je ne sais pas pour vous mais j'aime avoir la même musique dans tout mon appartement sans faire trop monter le son. Alors après quelques recherches sur ce problème, j'ai décidé de construire plusieurs enceintes toutes connectées en wifi au même serveur de musique afin de diffuser la même musique simultanément dans plusieurs pièces et notamment dans la salle de bain.
Le système est basé sur la technologie GStreamer qui est la base de certains logiciels impressionnants comme VLC et sur un haut-parleur avec capacité wifi utilisant un Raspberry Pi.
Étape 1: Construire un haut-parleur pour la salle de bain
Liste des pièces:
- un haut-parleur de salle de bain
- un ampli 2W (fonctionnant en 12v)
- un Raspberry Pi Zero (fonctionnant sur 5v)
- un DAC Pimoroni Phat
- une carte SD
- un bouton ON/OFF
- un adaptateur secteur 12v + une prise compatible
- un abaisseur DC/DC (12v->5v)
- un coffret électrique
- quelques câbles
La construction est assez simple.
Côté électronique, suivez ce schéma ASCII.
- Amplificateur de bouton ON/OFF à prise CC
- Bouton ON/OFF abaisseur DC/DC Raspberry Pi
- Haut-parleur amplificateur DAC Raspberry Pi Phat
Côté mécanique, découpez tous les trous nécessaires dans le coffret électrique, mettez le tout à l'intérieur et c'est tout.
En utilisant cette technique, vous pouvez créer toutes sortes d'enceintes que vous souhaitez.
Étape 2: le côté logiciel
Tout le côté logiciel est basé sur le framework multimédia open source, GStreamer. J'ai utilisé uniquement Linux mais il existe sur différents OS, donc j'imagine que tout peut être adapté pour d'autres OS.
Pour commencer, il faut installer Raspbian Lite sur le Pi, le DAC PHAT et le GStreamer 1.0 avec les "bons" plugins. Sur l'ordinateur utilisé comme serveur de musique, vous avez besoin du même GStreamer. Je ne détaillerai pas ces parties car d'autres l'ont fait mieux que moi. La dernière chose nécessaire est que le Pi et le serveur de musique doivent être connectés au même réseau par câble ou wifi.
Afin de tester si GStreamer est correctement installé, vous pouvez utiliser ces lignes de commande.
Sur l'enceinte:
$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, canaux=(int)1, payload=(int)96' ! rtpL16depay ! conversion audio ! autoaudiosink
Sur le PC:
$gst-launch-1.0 audiotestsrc ! conversion audio ! audio/x-raw, format="(string)S16BE", layout="(string)interleaved", channels=1, rate=44100 ! rtpL16payer ! hôte udpsink=port RASPBERRYPI_IP=5000
Après avoir mis la bonne adresse IP au lieu de "RASPBERRYPI_IP", vous devriez entendre un son sinusoïdal sur le haut-parleur. Ce n'est pas quelque chose que vous aimerez entendre pendant longtemps, alors ne mettez pas le volume trop fort.
Quelques explications: le PC produit le son sinusoïdal en utilisant "audiotestsrc", "audioconvert ! audio/x-raw, format="(string)S16BE", layout="(string)interleaved", channels=1, rate=44100" convert le son au bon format compris par "rtpL16pay" qui crée les paquets audio et enfin "udpsink" envoie les paquets en utilisant le protocole UDP. Sur le haut-parleur, c'est pareil mais inversé, "udpsrc" récupère le flux audio, "rtpL16depay" dé-paquets et "audioconvert ! autoaudiosink" convertit le son pour qu'il corresponde au format de la carte son automatique et bien sûr, le joue.
Alors maintenant que les choses de base fonctionnent, il est temps d'aller plus loin. Le but est d'intercepter le son d'une application afin de l'envoyer via le réseau.
- Nous créons une fausse sortie
$pactl load-module module-null-sink nom_évier=multiHP
- On connecte une entrée à la fausse sortie (silence l'application sélectionnée (entrée))
$pacmd list-sinks (liste de sorties)
$pacmd list-sink-inputs (liste d'entrées)
$pacmd move-sink-input %input %output (remplacez %input et %output par l'une des listes correspondantes)
- On met la carte son au maximum
$pactl set-sink-volume 0 100%
- On teste sur PC la façon de récupérer la fausse sortie (récupérer le son)
$gst-launch-1.0 pulsesrc device=multiHP.monitor ! conversion audio ! autoaudiosink
Vous devriez entendre à nouveau le son de l'application que vous avez sélectionnée.
Super! Il est maintenant temps de passer aux dernières lignes de commande. Voici les lignes de commandes dans le cas de 2 haut-parleurs avec le son également joué par le PC.
Sur chaque enceinte:
$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, charge utile=(int)96' ! rtpL16depay ! conversion audio ! autoaudiosink
Sur le PC:
$gst-launch-1.0 pulsesrc device=multiHP.monitor ! conversion audio ! audio/x-raw, format="(string)S16BE", layout="(string)interleaved", channels=2, rate=44100 ! rtpL16payer ! nom du tee=t t. ! file d'attente ! hôte udpsink=%addrpi1 port=5000 t. ! file d'attente ! hôte udpsink=% port addrpi2=5000 t. ! file d'attente ! conversion audio ! autoaudiosink
Étape 3: Conclusion
Cette instructable n'est que la première étape d'un projet complet. C'était seulement pour expliquer le principe. Vous pouvez maintenant automatiser en créant un script sur le démarrage du Raspberry Pi et sur le PC. Vous pouvez adapter la commande GStreamer en fonction de vos besoins. J'ai personnellement modifié mon précédent instructable (BRAND NEW OLD RADIO) afin de l'utiliser comme haut-parleur. Il y a une infinité de choses à faire pour améliorer ce système audio multi-pièces. En particulier, toutes les enceintes ne sont pas synchronisées, vous avez donc une certaine variation lorsque vous passez d'une pièce à l'autre.
J'espère que vous allez essayer d'améliorer cette instructable.
N'hésitez pas à poser des questions si vous avez besoin de détails.
Bon bricoleur !
Conseillé:
Tutoriel : Comment Arduino contrôle plusieurs périphériques à la même adresse en utilisant le multiplexeur TCA9548A I2C : 3 étapes
Tutoriel : Comment Arduino contrôle plusieurs périphériques à la même adresse à l'aide du multiplexeur TCA9548A I2C : Description : Le module multiplexeur TCA9548A I2C permet de connecter des périphériques avec la même adresse I2C (jusqu'à 8 mêmes adresses I2C) connectés à un microcontrôleur. Le multiplexeur agit comme un garde-porte, transférant les commandes vers l'ensemble sélectionné o
RÉUTILISER LES PIÈCES D'ANCIENNES PIÈCES DE ORDINATEUR DE BUREAU : 7 étapes
RÉUTILISER LES PIÈCES DE VIEILLES PIÈCES DE PC DE BUREAU : Hé les gars, on pourrait souligner que mes instructables semblent remorquer une partie particulière, ……… lol inutile de dire que tout est question d'améliorations de la vie pour moi, tous les jours, je répare quelque chose dans la maison pour résoudre un défi ou l'autre. À la maison le e
Arduino contrôlant plusieurs capteurs P.I.R sur le même bord : 3 étapes
Arduino contrôlant plusieurs capteurs PIR sur le même bord : aujourd'hui, je vais vous expliquer comment connecter plusieurs capteurs PIR avec un seul Arduino Bord > ici, j'ai également utilisé un module de relais à 4 canaux pour des fonctionnalités supplémentaires.ARDUINO + module de relais à 4 canaux + capteur à 4 PIR (OU vous pouvez utiliser autant de broches sur votre arduin
Comment rendre les LED WS2812B réactives à la musique avec plusieurs motifs : 4 étapes
Comment faire de la musique des LED WS2812B réactives avec multi-motif : WS2812, WS2812B est une source de lumière LED contrôlée intelligente. il a une puce de contrôle intégrée et a 4 broches. V+,V-,Din & Dout.Pour contrôler ces LED, nous voulons utiliser des MCU comme Arduino, PIC ou Rasberry pie.J'ai utilisé Arduino UNO pour ce projet
Jouez de la musique avec Arduino ! : 5 étapes (avec photos)
Jouer de la musique avec Arduino ! : Dans cette instructable, je vais vous montrer comment je joue de la musique à l'aide d'un Arduino UNO et d'un module de carte SD. Nous utiliserons la communication SPI. Commençons