Como converter caracteres em caracteres que produzem bips?

3

Sou novo no Linux e comecei recentemente a trabalhar no meu primeiro projeto (muito simples) - um gerador de código morse. Consegui fazer a tradução funcionar e agora quero dar o próximo passo.

Qual seria a melhor maneira de substituir o personagem "." com um sinal sonoro e "-" com um sinal sonoro ligeiramente mais longo? Eu gostaria de ser capaz de realmente produzir código morse audível.

De que maneira você teria usuários mais avançados fazendo isso? Se você tiver alguma ideia, por favor explique em termos tão simples quanto possível.

OBSERVAÇÃO: Meu código está aqui em pastebin: link .

echo
echo "What would you like to translate today?"
read transmission
clear
echo $transmission | sed 's/.\{1\}/& /g' | sed 's/a/.-/g;
s/b/-.../g;
s/c/-.-./g;
    
por nosferatwo 31.03.2016 / 08:54

3 respostas

5

No final: eu não responderei exatamente a sua pergunta, mas a ajuda está a caminho.

Você precisa de um programa para gerar os sons. O comando beep pode ajudar.

E você pode tentar codificar todos os detalhes como esse cara também tentou usando o bipe. Como enviar um tom de 1000 Hz por 2 segundos para o alto-falante (a depuração mostrará exatamente o que está sendo feito):

beep --debug -f 1000 -l 2000

Mas bipe só usa o alto-falante do PC para gerar tons.
E o seu computador pode não ter um alto-falante instalado.

No entanto, é realmente muito fácil gerar um som no linux: envie para /dev/audio

$ echo "test" > /dev/audio

Claro, "teste" é uma onda de som muito ruim, soará como um simples "salto".

Para realmente gerar um tom útil, você precisa criar todos os valores em uma onda senoidal em um arquivo e, em seguida, enviar o arquivo para /dev/audio . E aqui está um exemplo grosseiro de exatamente esta ideia .

Na verdade, tudo o que já foi codificado em um comando projetado para morse : cw.
Nos derivativos do Debian, instale-o com: apt-get cw .

Em seguida, execute isto:

echo "test" | cw

E essa é a razão pela qual "não vou responder exatamente a sua pergunta", porque cw faz todo o trabalho para você. Ele converte os caracteres em traço e ponto, cria uma onda sonora para cada um e envia para a placa de som.

Na verdade, a quantidade de ajuda disponível no Linux para o rádio Ham é esmagadora:

https://radio.linux.org.au/?sectpat=morse

E isso é somente para morse.

    
por 31.03.2016 / 18:50
0

Você pode substituí-los por caractere de campainha . Você acabaria de substituir '.' com um caractere de campainha e '-' com dois caracteres. Note que por causa disso a string teria que se expandir, mas isso não deveria ser muito difícil - por exemplo, você poderia simplesmente copiar a string, caractere por caractere, colocando dois caracteres de sino onde for apropriado.

Note, no entanto, que o caractere de sino às vezes "não funciona" (você não o ouve); para uma solução mais robusta, talvez você queira escrever algo como um analisador trivial que reproduziria som usando o comando externo (por exemplo, mpg123 ) para reproduzir o som quando encontrar um '.' ou '-', e aguarde o comando (ou até mesmo tocando a faixa 'sem som'! :)) caso contrário.

O pseudocódigo seria parecido com isto:

For every character in string:
   If character is '.':
     play "shortBeep"
   else if character is '-'
     play "shortBeep"
     play "shortBeep" # or play "longBeep"
   else
     play "noBeep" # or wait
    
por 31.03.2016 / 09:36
0

Você conseguiu converter o texto fornecido em código morse e agora quer converter esse código morse em bipes de áudio.

Faça o download (ou crie) dois arquivos para os dois sons (DOT.wav com um bipe curto para o dot & DASH.wav com um longo sinal sonoro para traço) e, em seguida, itere os sinais, usando speaker-test ou sox dentro o loop, para gerar o som correspondente ao sinal atual.

Usando as várias opções de linha de comando, você pode nem precisar dos 2 arquivos, e pode gerar o som especificando a freqüência e a duração.

Referências:
link
link

Verifique a sua instalação quanto a alternativas para teste de alto-falante ou sox, você pode encontrar ferramentas como play, beep, siggen, tonegen, etc. Confira link para mais.

    
por 31.03.2016 / 09:40