Estou tocando efeitos sonoros curtos usando aplay
sempre que os usuários interagem com a interface.
O que eu noto é que eu posso tocar qualquer um dos sons em qualquer ordem e desde que dois sons sejam tocados em 5 segundos um do outro, a transição é clara, mas uma diferença de mais de 5 segundos e há um pop horrível !
Note que todos os meus arquivos de som são < 1 segundo de duração.
O que eu fiz para hackar isso é criar um arquivo silence.wav com 5 segundos de taxa de amostragem baixa que faz um loop em um script .sh (que definitivamente não é uma solução de longo prazo):
Brute forçando com o silêncio:
#!/bin/bash
while [ 1 ] ; do
aplay sounds/blank.wav
done
O estouro agora é muito raro, se é que acontece.
Então, o que eu não consigo descobrir é por que diabos algo está mudando nesses 5 segundos para causar o pop? Como posso configurar o meu áudio para permanecer em um estado em que ele não vai aparecer quando um som é reproduzido depois de um longo atraso?
Eu experimentei o /etc/pulse/default.pa e o /etc/pulse/daemon.config, mas não progredimos.
Note que estou usando um pi de framboesa de núcleo único, mas se a força bruta com o silêncio ajuda, então ainda há esperança ??
[ATUALIZAÇÃO]
Eu me deparei com uma maneira um pouco mais elegante de usar continuamente o silêncio forçado para os dispositivos:
aplay /dev/zero
Playing raw data '/dev/zero' : Unsigned 8 bit, Rate 8000 Hz, Mono
Mas, por algum motivo, ele produz um tom de alta frequência. Existe uma maneira semelhante de fazer isso?
[ATUALIZAÇÃO]
aplay -r 8000 -f S16_LE /dev/zero
Isso faz o truque, com alguma sobrecarga de executar um thread constantemente para manter as coisas abertas. Mas caso contrário, o áudio é muito limpo agora.
Tags pulseaudio