Radio
CW and text over analog radio, from the terminal.
Two terminal programs for radio operators. CWtty sends, receives and teaches Morse code. BlackSquelch sends short text messages through an analog handheld radio, acoustically coupled to the computer.
C11Linux · macOS · Windowsminiaudio
↳ Morse · 15 WPM
01 / CW
CWtty
Morse telegraphy in the terminal.
- Modes
- Transmit, receive, transceiver with break-in, training (copy and send, letter by letter), Morse table.
- Keying
- Straight key on Space, paddles on the arrows: Iambic A, Iambic B, Ultimatic, Bug. USB paddles that act as mouse buttons.
- Key events
- Press and release through the kitty keyboard protocol (Linux, macOS) or the console API (Windows); auto-repeat fallback in other terminals.
- Keyer
- Runs in the audio callback: element and space lengths are sample-accurate. Raised-cosine sidetone envelope.
- Receiver
- 8 kHz chain: quadrature mixer, 4th-order Butterworth, quantile noise tracking, squelch. Dit and dah lengths by k-means, speed tracking, AFC, 512-point FFT waterfall.
- SDR
ptt_on()/ptt_off()hooks for keying;dsp_process()takes any 8 kHz stream.- Build
- C11, CMake, miniaudio. MIT.
02 / AFSK
BlackSquelch
Text messages over analog handheld radios.
- Link
- Computer speaker and microphone held against the radio; PTT operated by hand. No cable or interface.
- Modulation
- AFSK, 1200 / 2200 Hz, continuous phase, 5 ms edge ramps.
- Rate
- 10, 25 or 50 bit/s. The receiver detects it from the preamble.
- Frame
- 32-bit preamble and sync word, 6-character callsign, 1–512 characters in a 6-bit alphabet, CRC.
- Airtime
- "CIAO" from IU2ABC, 160 bits: 16 s at 10 bit/s, 3.2 s at 50 bit/s.
- PTT
- 2 s countdown before playback; release prompt once the audio has drained, output latency included.
- Offline
- Encode to and decode from WAV (48 kHz, mono, 16-bit).
- Not included
- ACK, FEC, encryption, VOX, automatic PTT.
- Build
- C11, CMake, miniaudio.