RealMorse! DJ0MZ, V07 2026-03-12


Download

Real Morse! - User Manual

Generated by ChatGPT5.2, prompt specs and post-editing by DJ0MZ.

Real Morse! is, on the one hand, a fun project intended to model and demonstrate what Morse code actually sounds like on the air, and on the other hand it can also be used as a model-based CW trainer. The "Real Morse!" name refers to the extensive set of user-adjustable parameters in a sender - channel - receiver communication model of Morse code use in shortwave contexts:


Hint for beginner learners: stick to the default settings with higher default speed (20 wpm) with longer spacing between characters (Farnsworth spacing set at 5 wpm). The idea is to learn rhythms, not dits and dahs. The speed and spacing can be adjusted by switching to the Parameter Model and changing the Transmitter settings.

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

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

Software specification and coding: Initial detailed specifications for HTML/CSS UI and JS interactive functionality were provided to ChatGPT5.n by DJ0MZ with incremental prompting for further UI and operational extensions. Extensive further development was conducted in numerous test cycles for correction and debugging. In Version 07 the random characters extension was introduced to facilitate use by beginners.


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 → Colour shaping → RX filter colouration → 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