Table des matières:

Jouez la même musique dans plusieurs pièces : 3 étapes
Jouez la même musique dans plusieurs pièces : 3 étapes

Vidéo: Jouez la même musique dans plusieurs pièces : 3 étapes

Vidéo: Jouez la même musique dans plusieurs pièces : 3 étapes
Vidéo: Apprenez votre premier morceau au piano 🎹 2024, Novembre
Anonim
Jouez la même musique dans plusieurs pièces
Jouez la même musique dans plusieurs pièces

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

Construire un haut-parleur pour la salle de bain
Construire un haut-parleur pour la salle de bain
Construire un haut-parleur pour la salle de bain
Construire un haut-parleur pour la salle de bain
Construire un haut-parleur pour la salle de bain
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é: