O problema que ninguém comenta sobre codificadores Morse online
A maioria dos codificadores de código morse que você encontra na internet converte texto para sinal com uma linha de comando e pronto. Eles funcionam para testes rápidos, mas escondem alguns detalhes que destroem a taxa de erro quando você tenta usar na prática. Eu configurei um sistema de recepção com SDR há uns dois anos e passei cerca de três semanas ajustando o decoder porque o gerador que eu estava usando não respeitava o spacing correto entre letras e palavras. O resultado era código legível para humanos, mas ininteligível para qualquer algoritmo de decodificação automática. O padrão ITU-R M.1677-1 define que o ponto dura uma unidade, o traço dura três unidades e o espaço interno entre elementos da mesma letra também é uma unidade. Entre letras, o silêncio deve ser de três unidades. Entre palavras, sete unidades. A maioria dos codificadores amadores usa cinco unidades para separar palavras, o que soa estranho para quem ouveCW regular. Corrigir isso no meu script levou uma noite inteira só para ajustar os delays e normalizar a taxa de caracteres por minuto.
Como usar um codificador de código morse de verdade
Se você precisa de uma solução que gere sinais auditivos ou imagens de telegrafia corretos, o caminho mais direto é construir sua própria camada de codificação sobre uma biblioteca existente. No Python, o pacote morse ou o py-morse já implementam o mapeamento de caracteres segundo o padrão ITU. O processo básico envolve ler uma string, dividir em palavras, mapear cada caractere para sua sequência de pontos e traços, e depois aplicar os delays conforme a especificação. Um detalhe que as pessoas ignoram é a normalização de acentos. Texto em português com ç, ã, õ, é, á e ô precisa ser sanitizado antes da codificação. O charset padrão do Morse não contempla esses símbolos. A abordagem correta é remover acentos e converter ç para c usando unacent() do Python ou uma regex simples. Sem isso, o codificador simplesmente pula os caracteres ou quebra a saída.
Para saída de áudio, gere um tom de 700 Hz com modulação de chaveamento direto. A taxa de baud deve ser calculada como 1200 dividido pelos caracteres por minuto desejados. Para 20 WPM, cada unidade mede 60 ms. Um ponto gera 60 ms de portadora, um traço gera 180 ms, o espaço intraelemento é 60 ms de silêncio, o espaço entre letras é 180 ms de silêncio e o espaço entre palavras é 420 ms de silêncio. Qualquer desvio dessa proporção degrada a decodificação automática em pelo menos 15% em condições normais de ruído.
Problemas práticos e alternativas
Eu encontrei um caso específico em que um codificador de código morse online aceitava hífen e barra como caracteres válidos, mas interpretava a barra como espaço de palavra em vez de um símbolo codificável. O resultado era uma quebra de palavra a cada "/" no texto original, o que tornava a leitura totalmente errada. A solução foi interceptar a string antes da codificação, substituir barras por "_" e tratar hífens com seu mapeamento próprio: dot-dash-dot-dash-dot-dash. Outro problema recorrente é a geração de arquivos WAV com taxa de amostragem incompatível. Codificadores que produzem áudio a 8 kHz introduzem aliasing visível no espectro e distorcem a forma de onda suficiente para confundir decodificadores como FSKdemeser ou WSJT-X. Sempre use 44100 Hz ou 48000 Hz. O tamanho do arquivo aumenta, mas a qualidade do sinal permanece estável.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Se você precisa apenas converter texto para representação visual de pontos e traços, ferramentas online simples resolvem em segundos. Se o objetivo é gerar áudio CW legítimo para teste de receiver, automação de transmissão ou desenvolvimento de decoder, vale a pena escrever um script próprio. O tempo gasto na configuração inicial, algo em torno de uma a duas horas, se paga rapidamente ao evitar retrabalho com saídas defeituosas.
Onde encontrar código pronto
Repositórios no GitHub com a licença MIT oferecem soluções funcionais. Procure por projetos que explicitamente citam a norma ITU-R M.1677 e incluem testes de unidade para os timings. Muitos codificadores de código morse disponíveis publicamente pulam essa validação e geram símbolos corretos no papel, mas com gaps errados na prática. Verifique os testes antes de confiar na ferramenta para produção. Um exemplo mínimo que eu uso internamente lê texto via stdin, normaliza acentos, aplica a tabela ITU, gera um WAV a 700 Hz com os timings corretos e salva o arquivo. Para 100 palavras, o processamento leva cerca de 4 segundos em uma máquina comum. A conversão de texto puro para sequência de dots e dashes é quase instantânea, o gargalo real está na síntese de áudio.
Limitações que valem a pena saber
O Morse tradicional suporta letras latinas, dígitos de 0 a 9 e alguns sinais de pontuação. Não suporta emojis, caracteres cirílicos, árabe ou qualquer script não latino sem extensão própria. Se seu texto contém esses caracteres, o codificador either ignora silently or lança erro, dependendo da implementação. Textos multilíngues exigem pré-processamento manual antes de passar pela codificação. A precisão do decoder também depende da estabilidade da portadora. Geradores que usam osciladores baseados em software sem jitter controlado introduzem variações de frequência da ordem de alguns hertz, suficientes para diminuir a taxa de acerto de decodificadores automáticos em ambientes com QSB moderado. Para uso em campo, um oscilador controlado por tensão ou um gerador de RF dedicado supera qualquer solução puramente por software em confiabilidade.
A decisão entre usar um codificador de código morse pronto ou desenvolver o seu próprio depende do que você precisa. Para estudos, hobbies e experimentação rápida, as ferramentas online bastam. Para projetos que exigem conformidade com o padrão ITU, compatibilidade com SDR e decodificação automática confiável, construir a camada de codificação com controle explícito de timings é o caminho mais econômico a longo prazo.