İçindekiler:

Aynı Müziği Birden Fazla Odada Çalın: 3 Adım
Aynı Müziği Birden Fazla Odada Çalın: 3 Adım

Video: Aynı Müziği Birden Fazla Odada Çalın: 3 Adım

Video: Aynı Müziği Birden Fazla Odada Çalın: 3 Adım
Video: Azap HG - Ninni 2024, Temmuz
Anonim
Aynı Müziği Birden Fazla Odada Çalın
Aynı Müziği Birden Fazla Odada Çalın

Herkese selam, Sizi bilmem ama ben sesi çok yükseltmeden tüm dairemde aynı müziğin olmasını seviyorum. Bu problem hakkında biraz araştırma yaptıktan sonra, aynı müziği birkaç odada ve özellikle banyoda aynı anda çalmak için hepsi wifi ile aynı müzik sunucusuna bağlı birkaç hoparlör kurmaya karar verdim.

Sistem, VLC gibi bazı harika yazılımların ve Raspberry Pi kullanan wifi özellikli hoparlörün temeli olan GStreamer teknolojisine dayanmaktadır.

Adım 1: Banyo için Hoparlör Oluşturma

Banyo için Hoparlör Oluşturma
Banyo için Hoparlör Oluşturma
Banyo için Hoparlör Oluşturma
Banyo için Hoparlör Oluşturma
Banyo için Hoparlör Oluşturma
Banyo için Hoparlör Oluşturma

Parça listesi:

  • banyo geçirmez hoparlör
  • 2W amplifikatör (12v üzerinde çalışıyor)
  • bir Raspberry Pi Zero (5v üzerinde çalışıyor)
  • bir Pimoroni Phat DAC
  • bir SD kart
  • bir AÇMA/KAPAMA düğmesi
  • 12v güç adaptörü + uyumlu bir fiş
  • a DC/DC düşürme (12v->5v)
  • bir elektrik kutusu
  • bazı kablolar

İnşaat oldukça basittir.

Elektronik tarafta, bu ASCII diyagramını takip edin.

  • DC fişi AÇMA/KAPAMA düğmesi amplifikatörü
  • AÇMA/KAPAMA düğmesi DC/DC kademeli Raspberry Pi
  • Raspberry Pi Phat DAC amplifikatör hoparlörü

Mekanik tarafta, elektrik kutusunda gereken tüm delikleri kesin, her şeyi içine koyun ve hepsi bu.

Bu tekniği kullanarak, istediğiniz her türlü hoparlörü oluşturabilirsiniz.

2. Adım: Yazılım Tarafı

Tüm yazılım tarafı, açık kaynaklı multimedya çerçevesi GStreamer'a dayanmaktadır. Sadece Linux kullandım ama farklı işletim sistemlerinde var, bu yüzden hepsinin başka işletim sistemlerine uyarlanabileceğini hayal ediyorum.

Başlangıç için Raspbian Lite'ı Pi'ye, PHAT DAC'ye ve GStreamer 1.0'a "iyi" eklentilerle kurmanız gerekiyor. Müzik sunucusu olarak kullanılan bilgisayarda aynı GStreamer'a ihtiyacınız var. Bu kısımları detaylandırmayacağım çünkü diğerleri bunu benden daha iyi yaptı. İhtiyaç duyulan son şey, Pi'nin ve müzik sunucusunun kablo veya wifi ile aynı ağa bağlı olması gerektiğidir.

GStreamer'ın doğru şekilde kurulup kurulmadığını test etmek için bu komut satırlarını kullanabilirsiniz.

Hoparlörde:

$gst-launch-1.0 udpsrc bağlantı noktası=5000 caps='application/x-rtp, media=(string)audio, clock-rate=(int)44100, encoding-name=(string)L16, encoding-params=(dize)1, kanallar=(int)1, yük=(int)96' ! rtpL16depay ! ses dönüştürme ! otoaudiosink

PC'de:

$gst-launch-1.0 audiotestsrc ! ses dönüştürme ! audio/x-raw, format="(string)S16BE", layout="(string)interleaved", kanallar=1, oran=44100 ! rtpL16pay ! udpsink ana bilgisayar=RASPBERRYPI_IP bağlantı noktası=5000

"RASPBERRYPI_IP" yerine iyi IP adresini girdikten sonra hoparlörde sinüzoidal bir ses duymalısınız. Bu uzun süre duymak isteyeceğiniz bir şey değil, bu yüzden sesi çok yüksek tutmayın.

Bazı açıklamalar: Bilgisayar sinüsoidal sesi "audiotestsrc", "audioconvert ! audio/x-raw, format="(string)S16BE", layout="(string)interleaved", channel=1, rate=44100" convert kullanarak üretir. "rtpL16pay" tarafından anlaşılan ve ses paketlerini oluşturan ve son olarak "udpsink" tarafından anlaşılan iyi formattaki ses, paketleri UDP protokolünü kullanarak gönderir. Hoparlörde aynı ama ters çevrilmiş durumda, "udpsrc" ses akışını kurtarıyor, "rtpL16depay" paketleri dağıtıyor ve "audioconvert ! autoaudiosink" sesi otomatik ses kartının formatına uyacak şekilde dönüştürüyor ve tabii ki çalıyor.

Şimdi temel şeyler çalıştığına göre, daha ileri gitme zamanı. Amaç, ağ üzerinden göndermek için bir uygulamanın sesini kesmektir.

- Sahte çıktı oluşturuyoruz

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

- Sahte çıkışa bir giriş bağlarız (seçilen uygulamayı (giriş) sessize alırız)

$pacmd liste havuzları (çıkış listesi)

$pacmd list-sink-inputs (giriş listesi)

$pacmd move-sink-input %input %output (%input ve %output'u ilgili listelerden biriyle değiştirin)

- Ses kartını maksimuma koyduk

$pactl set-sink-volume 0 100%

- Sahte çıktıyı kurtarmanın yolunu PC'de test ediyoruz (sesi kurtarıyoruz)

$gst-launch-1.0 pulsesrc device=multiHP.monitor ! ses dönüştürme ! otoaudiosink

Seçtiğiniz uygulamanın sesini tekrar duymalısınız.

Harika! Şimdi son komut satırlarına gitme zamanı. PC tarafından da çalınan sese sahip 2 hoparlör durumunda komut satırları.

Her Hoparlörde:

$gst-launch-1.0 udpsrc bağlantı noktası=5000 caps='application/x-rtp, media=(string)audio, clock-rate=(int)44100, encoding-name=(string)L16, encoding-params=(dize)2, yük=(int)96' ! rtpL16depay ! ses dönüştürme ! otoaudiosink

PC'de:

$gst-launch-1.0 pulsesrc device=multiHP.monitor ! ses dönüştürme ! audio/x-raw, format="(string)S16BE", layout="(string)interleaved", kanallar=2, oran=44100 ! rtpL16pay ! tee adı=t t. ! sıra ! udpsink ana bilgisayar=%addrpi1 bağlantı noktası=5000 t. ! sıra ! udpsink ana bilgisayar=%addrpi2 bağlantı noktası=5000 t. ! sıra ! ses dönüştürme ! otoaudiosink

3. Adım: Sonuç

Bu talimat, eksiksiz bir projenin sadece ilk adımıdır. Sadece prensibi açıklamak içindi. Artık Raspberry Pi önyüklemesinde ve PC'de bazı komut dosyaları oluşturarak otomatikleştirebilirsiniz. GStreamer komutunu ihtiyacınıza göre uyarlayabilirsiniz. Hoparlör olarak kullanmak için önceki talimatımı (YEPYENİ ESKİ RADYO) kişisel olarak değiştirdim. Bu çok odalı ses sistemini geliştirmek için yapılacak sonsuz sayıda şey var. Özellikle, tüm hoparlörler senkronize değildir, bu nedenle bir odadan diğerine geçtiğinizde bazı varyasyonlarınız olur.

Umarım bu talimatı geliştirmeye çalışırsınız.

Ayrıntılara ihtiyacınız olursa soru sormaktan çekinmeyin.

İyi tamirci!

Önerilen: