RealMorse! DJ0MZ, V06 2026-02-03


Download

Real Morse! - User Manual

Real Morse! is a model-based CW trainer. It generates realistic Morse audio for training both beginner and advanced learners, based on a sender - channel - receiver communication model of



The goal is practice that sounds closer to real on-air CW than “clean” sidetone generators.

This web app is open source and experimental. No warranty is given on fitness for purpose or unexpected effects.


Quick Start

  1. Enable audio: click Start once. Browsers require a user gesture before audio can play.
  2. Choose your mode:
    • Condx = quick “band conditions” presets (signal + QSB + noise).
    • Params = full control of transmitter / channel / receiver parameters.
  3. Pick what is sent: in Message, choose Source (Templates / Random callsigns / Custom text).
  4. Click Generate new to create a fresh message and a new timing plan. Use Repeat to replay the last generated message exactly.
  5. If you want a real copying exercise, turn off Reveal transcript. Turn it on only to check your copy.

UI Overview

The UI is organized as a radio-style audio chain: TX → Channel → RX. Most sections are implemented as nested <details> blocks, so you can collapse everything and focus on one layer at a time.

Top Bar

Main Panels

A) Message B) Conditions (Condx mode)

When Condx mode is active, the full parameter sliders are ignored and the radio buttons apply a small set of “band condition” values (primarily signal strength, QSB depth/rate, and noise floor). This gives a fast, realistic practice ladder without “engineering the radio.”

C) Parameters (Params mode)

In Params mode, the full transmitter/channel/receiver model is enabled. The layout is hierarchical:


JavaScript Implementation (Conceptual)

The app is a single-file WebAudio application built from a few clear layers:

Audio model at a glance
  • Signal path: Oscillator → Keying envelope → Channel AM (QSB/flutter) → RX filter → Master.
  • Noise path: Noise source → Color shaping → RX filter coloration → Mixed with signal (with optional “signal masks noise” behavior in Condx).
  • Scheduling: keying plan is rendered as gain ramps to avoid clicks; fading is applied via low-rate modulators.

Other Morse Apps (for comparison)


Glossary

WPM
Words per minute. Element speed for dits/dahs (character speed).
Farnsworth
Increases spacing between characters/words while keeping character elements at full speed.
Dit / Dah
The short and long Morse elements. Traditional dah length is ~3× a dit.
Weight
Bias that slightly lengthens or shortens keyed elements overall (a “heavier” or “lighter” fist).
Jitter
Random timing variation of elements and/or gaps; makes keying less machine-perfect.
Pitch
Transmitted audio tone frequency (sidetone-like pitch used for training).
Attack / Release
Envelope ramp times at key-down and key-up; prevents clicks and shapes keying “softness”.
QSB
Slow amplitude fading due to propagation (signal “washes in and out”).
Flutter
Faster, smaller amplitude variation than QSB (a “tremble” of the signal).
Drift
Slow frequency change over time (TX instability or tuning drift).
Doppler
Frequency shift due to relative motion; in ham practice often associated with satellites.
QRN
Atmospheric noise / band noise floor (background noise).
QRM
Interference from other stations (another keyed CW signal or multiple signals).
Bandpass Q
Receiver filter “sharpness”. Higher Q is narrower and changes the audio “color” of signal/noise.
AGC
Automatic gain control. It adjusts gain over time; fast attack can suppress peaks, slow release can keep noise down between elements (or the opposite, depending on settings).
Seed
Text value used to generate reproducible “random” messages and channel variation.


Condx
Condition preset mode. Ignores most parameter sliders and instead applies a small set of “band condition” presets (signal strength, noise floor, QSB depth/rate) for fast realistic practice.
Params
Parameter mode. Enables full control of the transmitter / channel / receiver model using the sliders and checkboxes in the right panel.
Start
Starts playback of the current message plan. Also serves as the initial “audio unlock” gesture required by browsers before sound can play.
Stop
Stops playback immediately and cancels any active Repeat n cycle.
Generate new
Creates a new message and builds a fresh timing plan. If no seed is provided, a new random seed is used.
Repeat
Replays the last generated message (deterministically, so practice is consistent).
Repeat n
Plays n iterations in a row (1–100). Each iteration generates a new random seed, produces a new message (with new callsigns), builds a new plan, and plays it. The input field shows a countdown during the cycle, then returns to its original value at the end.
Speaker
Label for the master output volume control (the slider next to it). This is the overall loudness of the app relative to the current system setting of the speaker.
Idle / Playing / Stopped
Playback status indicator. Idle means nothing is currently playing, Playing means audio is active, and Stopped means playback was manually stopped.
Help!
Jumps to the in-page user manual section.

D. Gibbon, Sa 31. Jan 22:53:02 CET 2026