Olá pessoal, tudo bem?

Comecei um projeto bem simples, onde ele possui 4 botões, sendo que cada botão possui 1 som próprio (mp3) e 1 led próprio. O projeto é só isso. Fim. Não tem nada mais a acrescentar. A ideia é absurdamente simples. 

A dificuldade que estou tendo, é em emitir sons em paralelo, isto é, se apertar o botão 1, e depois apertar o botão 2, os dois sons deverão se emitidos, mas cada um em seu tempo.

Exemplo:

Botão 1: Pessoa falando "Paralelepípedo".

Botão 2: Pessoa falando: "Sapato"

Como deve ficar caso seja pressionado o botão 1, e após 1 segundo, seja pressionado o botão 2:

"Parale(le-sa)(pi-pa)(pe-to)do"

Atualmente, caso eu tente fazer o exemplo citado, ele CORTA o primeiro áudio e inicia o segundo, ficando:

"ParaleSapato"

Para emitir os sons, utilizei o DFPlayerMini, um módulo bem popular e de baixo custo. 

A solução mais simples que pensei, seria utilizar 4 dfplayers, cada um para emitir 1 som (é um esperdício...). Para a recepção, o DAC ou Output (ambos dos dfplayers) ficariam todos ligados em paralelo, talvez, com diodo.

Qual a opinião de vocês? Alguém teria uma sugestão mais eficaz? Esta estratégia PARECE que funciona bem, mas soa como uma gambiarra sem precedentes.

Exibições: 264

Responder esta

Respostas a este tópico

Olá.

   Esse integrado que vai no DFPlayer consegue descompactar um MP3, que já é fantástico.

   Para fazer isso seria preciso descompactar 2 ou até 4 MP3 ao mesmo tempo. Tarefa que acredito ser impossível em tempo real.

   Sugestões:

   1) colocar 4 DFPlayers (URGH!).

   2) Usar um hardware que consiga descompactar (tocar) 4, como um Raspberry.

         Veja como: https://processing.org/reference/libraries/sound/SoundFile.html

   3) Usar áudio descompactado:

       Seria por exemplo um arquivo .wav (wave). Ele pode ter o som "RAW" ou descompactado (também existem compactações simples, só não ligar).

       Assim vc poderia tocar usando uma rotina adaptada dessa:

https://www.arduino.cc/en/Tutorial/SimpleAudioPlayer

     Que simplesmente leria os 4 audios e faria um mixer (soma os 4 valores e divide por 4).

     Para isso bastaria um cartão de memoria ligado a um microcontrolador rápido (ESP32, por ex) que tenha um bom DAC (ESP32 tem).

     Nunca testei, mas em geral a qualidade do áudio desse tipo de solução é inferior ao do DFPlayer, mas quem sabe para sua necessidade atenda. 

     Nessa solução o cartão de memória pode ser um gargalo. Como o ESP tem bastante memória quem sabe uma solução fosse tentar fazer os audios caberem na memoria dele, ainda que na RAM, com uma leitura previa dos arquivos WAV ou mesmo a inclusão deles no codigo. Aih ficaria rápido... 

Ref:

https://pt.wikipedia.org/wiki/WAV

Olá Eduardo.

1) colocar 4 DFPlayers (URGH!).

- Concordo com sua expressão. Em todo caso, se ligasse todos em paralelo, seria necessário adicionar diodos. Correto? 

2) Usar um hardware que consiga descompactar (tocar) 4, como um Raspberry.

- É uma outra boa opção também, mas o custo sobe bastante, assim como o Due (do item 3). Entretanto, sua sugestão continua sendo válida, afinal, eu não tinha especificado estes pontos. Desde que seja possível, prefiro ficar entre o arduino Uno ou esp (32 por ter em estoque, ou 8266, pelo valor um pouco inferior)

3) Usar áudio descompactado:

- Citei o mp3 por ser bem popular, mas pode ser qualquer formato de áudio. Este ponto não é crítico. 

Os links que você citou, são bem interessantes, vou analisa-los com mais calma.

Bom dia TM,

Você quer que o segundo som saia junto com o primeiro mas um pouco depois do inicio do primeiro,

ou quer que o segundo aguarde que o primeiro termine e então o segundo comece?

RV mineirin

Olá RV.

Os sons são curtos (1 á 10 segundos). A ideia é que um som sempre inicie após apertar um determinado botão. Independente de ter algum em execução. Entretanto, sem interromper o som anterior. como um "thread".

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço