CW is a program for learning and practicing Morse Code (CW), written in the Ruby language.

CLICK HERE to go straight to the Tutorial


CW stands for Continuous-Wave and refers to a fixed unmodulated frequency. Back in the early days of telegraphy when morse code was the only effective means of long-distance wireless communication, the term CW became synonymous with morse telegraphy - since morse generation consisted of switching a continuous wave on or off with a morse key. The name stuck and is still in use today.

Whilst other forms of communication have proliferated and rendered CW unused in the commercial communications domains, much interest remains in the field of Amateur Radio, whereby many keen amateurs spend many hours attaining the skill of communication by the key. Indeed CW contests are as popular as they ever were, and pit operators against each other seaking to make the most contacts within a set time. Some of these contests involve very low-power transmissions (QRP) which CW is particularly well suited to. Another exotic use of CW is for Earth-Moon-Earth transmissions (EME) where high-frequency CW signals are bounced off the moon prior to being received in some far-distant location.

Program Features

CW was born out of the desire to make it easier to learn and develop the skill, by utilizing the power of computer software to help in this quest.

CW can be useful right from the very beginning of the journey to learn the code, by generating and learning to copy a few letters of the alphabet, and learning to copy words composed of those letters.

CW can read books (and keep a bookmark of where you are), read RSS feeds (your daily quotation for instance), common phrases, QSO codes etc, in addition to generating random words, letters, and numbers that possibly match some required pattern (i.e. four letter words_beginning_with ‘v’, or words containing ‘ion’).

CW also allows for real-time progress marking by indicating correct and incorrect characters and words copied in real-time. A follow mode also exists which prints the output just after it has been played, for `copyless’ practice and sound recognition. A further mode called reveal mode displays the words or phrase only after the whole pattern has been played for word recognition and comprehension practice.

CW can also be useful for learning to copy via touch-typing rather than via pencil, which - once you can touch-type - can be done at higher rates with less effort. There may be the added value of learning to touch-type at the same time!

CW can speak winkeyer protocol, and can control a winkeyer-equipped cw keyer in tx mode (t.b.a - currently being tested). This means CW can be used in place of a key (or along-side a key) during contests, or for more conventional QSOs, and general rag-chewing. tx mode provides the ability to setup macros to ease the repetition of sending callsigns etc. When not transmitting rx mode is available for copying the returned code, and includes a capture mode for quickly capturing important information for later use (possibly within macros), and for record-keeping.

CW was initially written for my own use, but having found it useful I have decided to Open Source the software, and hope that others will benefit from it. It could be used by novice operators learning their first few letters, or more advanced practitioners readying themselves for participation in their first World-Wide CW Contest.