As I was going around looking for resilient comms technologies for end-times preparedness, I realized that mastering CW (continuous wave) communications on HF bands should be included in my arsenal of skills. Depending on the ionospheric conditions, CW communications on HF can provide long-distance communications on minimal power, to complement the local comms powered by VHF and UHF.
However, communicating on CW requires a significant amount of training. Basically, CW operators must be able to talk in Morse code, at conversational speeds. Experienced CW operators no longer hear the tone and the dits and the dahs— they hear letters being pronounced, they hear meanings, words, and even entire sentences. Just like how normal human beings process spoken language.
Koch and Koch–Farnsworth training are recognized as two most effective methods in getting partway there: hearing letters instead of dits and dahs. It is heavily audio-based and does not require students to memorize the dot and dash combination with Morse code charts. The Koch method was devised in the 1930s, but it was made viable with the advent of computers. With UNIX-based computers, it can be augmented even more by enabling the users to train in a much more flexible way (e.g. training to comprehend words, Q-codes, and prosigns after one masters letters.)
There is a variety of CW Koch trainers online and for Windows, Linux, iOS, and Android. But let me add one more to the mix, written for my old PowerPC Mac laptop running OpenBSD; one that aspires to embody the UNIX philosophy when it comes to CW and CW training.
Presenting cwsnd
& kochgen
cwsnd
is a CW/Morse code sounder written for
OpenBSD using the sndio
API. It converts text
from the standard input into Morse code sounds. The primary
use case for this program is for CW ham study purposes,
although it can be used for computer keying with suitable
hardware, similar to FLDigi Tx using sound card audio
output.
Currently only OpenBSD is supported. I find OpenBSD's
sndio
API very easy to work with, unlike
PipeWire or PulseAudio. I also don't have to make my
program dependent on some other middleware with sound
functionality if I want to avoid the Linux Audio hellscape.
On top of that, the documentation is excellent
(chef's kiss) and I was able to cobble a C program to do the
dits and dahs just by reading the manpages.
kochgen
is a simple utility to generate a word
list based on a character set. It can be used for Koch or
Koch–Farnsworth training when piped into
cwsnd
.
Obtaining the source code
cwsnd & kochgen is now available on my Git server.