Índice:

Toque a mesma música em várias salas: 3 etapas
Toque a mesma música em várias salas: 3 etapas

Vídeo: Toque a mesma música em várias salas: 3 etapas

Vídeo: Toque a mesma música em várias salas: 3 etapas
Vídeo: PROCURANDO MÚSICA NO YOUTUBE - VOCÊ TAMBÉM FAZ ISSO? #shorts 2024, Novembro
Anonim
Toque a mesma música em várias salas
Toque a mesma música em várias salas

Olá a todos, Não sei sobre você, mas gosto de ter a mesma música em todo o meu apartamento sem deixar o som muito alto. Então, após um pouco de pesquisa sobre este problema, decidi construir vários alto-falantes todos conectados por wi-fi ao mesmo servidor de música para tocar a mesma música simultaneamente em vários quartos e em particular no banheiro.

O sistema é baseado na tecnologia GStreamer que é a base de alguns softwares incríveis como o VLC e um alto-falante com capacidade wi-fi usando um Raspberry Pi.

Etapa 1: construir um alto-falante para o banheiro

Construindo um alto-falante para o banheiro
Construindo um alto-falante para o banheiro
Construindo um alto-falante para o banheiro
Construindo um alto-falante para o banheiro
Construindo um alto-falante para o banheiro
Construindo um alto-falante para o banheiro

Lista de peças:

  • um alto-falante à prova de banheiro
  • um amplificador de 2W (funcionando em 12v)
  • um Raspberry Pi Zero (trabalhando em 5v)
  • um Pimoroni Phat DAC
  • um cartão SD
  • um botão ON / OFF
  • um adaptador de alimentação 12v + um plugue compatível
  • uma redução DC / DC (12v-> 5v)
  • uma caixa elétrica
  • alguns cabos

A construção é bastante direta.

No lado eletrônico, siga este diagrama ASCII.

  • Amplificador de botão liga / desliga com plugue DC
  • Botão ON / OFF DC / DC step-down Raspberry Pi
  • Alto-falante amplificador Raspberry Pi Phat DAC

Do lado mecânico, corte todos os furos necessários na caixa elétrica, coloque tudo dentro e pronto.

Usando essa técnica, você pode criar todos os tipos de alto-falantes que desejar.

Etapa 2: o lado do software

Todo o lado do software é baseado na estrutura de multimídia de código aberto, GStreamer. Usei apenas Linux, mas ele existe em sistemas operacionais diferentes, então imagino que todos possam ser adaptados para outro sistema operacional.

Para começar, você deve instalar o Raspbian Lite no Pi, o PHAT DAC e o GStreamer 1.0 com os "bons" plug-ins. No computador usado como servidor de música, você precisa do mesmo GStreamer. Não vou detalhar essas partes porque outros fizeram isso melhor do que eu. A última coisa necessária é que o Pi e o servidor de música estejam conectados à mesma rede por cabo ou wi-fi.

Para testar se o GStreamer está instalado corretamente, você pode usar essas linhas de comando.

No alto-falante:

$ 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, canais = (int) 1, carga útil = (int) 96 '! rtpL16depay! audioconvert! autoaudiosink

No PC:

$ gst-launch-1.0 audiotestsrc! audioconvert! audio / x-raw, format = "(string) S16BE", layout = "(string) intercalado", canais = 1, taxa = 44100! rtpL16pay! host udpsink = RASPBERRYPI_IP port = 5000

Depois de colocar o endereço IP correto em vez de "RASPBERRYPI_IP", você deve ouvir um som sinusoidal no alto-falante. Isso não é algo que você vai gostar de ouvir por muito tempo, então não coloque o volume muito alto.

Alguma explicação: o PC produz o som sinusoidal usando "audiotestsrc", "audioconvert! Audio / x-raw, format =" (string) S16BE ", layout =" (string) intercalado ", channels = 1, rate = 44100" convert o som em bom formato entendido por "rtpL16pay" que cria os pacotes de áudio e finalmente "udpsink" envia os pacotes usando o protocolo UDP. No alto-falante, é o mesmo, mas invertido, "udpsrc" recupera o fluxo de áudio, "rtpL16depay" de-packets e "audioconvert! Autoaudiosink" converte o som para corresponder ao formato da placa de som automática e, claro, o reproduz.

Agora que o básico funciona, é hora de ir mais longe. O objetivo é interceptar o som de um aplicativo para enviá-lo pela rede.

- Criamos uma saída falsa

$ pactl módulo de carga módulo-nulo-coletor sink_name = multiHP

- Conectamos uma entrada à saída falsa (silenciamos o aplicativo selecionado (entrada))

$ pacmd list-sinks (lista de saídas)

$ pacmd list-sink-inputs (lista de entradas)

$ pacmd move-sink-input% input% output (substitua% input e% output por uma das listas correspondentes)

- Colocamos a placa de som no máximo

$ pactl set-sink-volume 0 100%

- Testamos no PC a forma de recuperar a saída falsa (recuperar o som)

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

Você deve ouvir novamente o som do aplicativo que selecionou.

Excelente! Agora é hora de ir para as linhas de comando finais. Aqui estão as linhas de comando no caso de 2 alto-falantes com o som também reproduzido pelo PC.

Em cada alto-falante:

$ 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, carga útil = (int) 96 '! rtpL16depay! audioconvert! autoaudiosink

No PC:

$ gst-launch-1.0 pulsesrc device = multiHP.monitor! audioconvert! audio / x-raw, format = "(string) S16BE", layout = "(string) intercalado", canais = 2, taxa = 44100! rtpL16pay! nome do T = t t. ! fila ! host udpsink =% addrpi1 porta = 5000 t. ! fila ! host udpsink =% addrpi2 port = 5000 t. ! fila ! audioconvert! autoaudiosink

Etapa 3: Conclusão

Este instrutível é apenas o primeiro passo para um projeto completo. Era apenas para explicar o princípio. Agora você pode automatizar fazendo algum script na inicialização do Raspberry Pi e no PC. Você pode adaptar o comando GStreamer de acordo com sua necessidade. Eu pessoalmente modifiquei meu instrutível anterior (BRAND NEW OLD RADIO) para usá-lo como um alto-falante. Há um número infinito de coisas a fazer para melhorar este sistema de som multi-sala. Em particular, todos os alto-falantes não estão sincronizados, então você tem alguma variação quando muda de uma sala para outra.

Espero que você tente melhorar este instrutível.

Não hesite em fazer perguntas se precisar de detalhes.

Bom mexer!

Recomendado: