CW Trainer 1.0
(Morse Code Reviewer)
CW-Trainer is a tool for learning and practicing Morse code, such as for passing amateur
(ham) radio license exams. It either takes text that you supply or it randomly generates text, and converts the characters into code sounds.
It can test your reading of the tones. The sending speed and Farnsworth compression level are adjustable.
CW-Trainer was written in C for Linux PC's or other computers. This is the web-page for the original
text-only version. New versions have an easier-to-use graphical interface. See CW_Trainer2.
Invoke CW_Trainer as: ./cw_trainer1.exe ...
Where the ... includes options as follows:
- -h - Get a list of the command options and brief explanations.
- -wpm xx - Sets the code-speed to xx words-per-minute.
Code-speed defaults to 5.0 words-per-minute unless otherwise set.
- -fwc xx -
Farnsworth Compression is a technique that increases the spacing between letters while speeding up the da-dits.
It maintains the average WPM speed, while making the letter-sounds more distinct, especially for learning.
CW-Trainer defaults to a Farnsworth Compression Ratio of 1.75. You can set the ratio either by command-line argument, -fwc xx.
- [nothing other than optionally -h, -wpm, or -wpm] - This is the default usage mode. It enables you to enter text interactively.
This is useful when first beginning. It prompts you for letters. You type them and press enter.
You then hear the sounds of individual letters or words as you typed them.
Can you distinguish 'h' from 's'? Try it. Are you having trouble distinguishing certain letter patterns?
You can practice them this way at your own speed.
- [text-file-name] - By entering the name of a text file on the command-line, you play pre-prepared files.
This is useful to hear realistic words and sentences.
One idea is to download news-stories into text files for virtually endless practice.
- -rand - Generates one random character at time, and then waits for you to type the
letter on the keyboard. If you get the answer wrong, it sounds an error-beep and sends the same character again until you get it right.
This is a very good mode for new beginners. It enable you to control your own pace while you learn the sounds.
If you get really stuck, or while first learning, you can see the character being sent by looking at the console window.
The practice sessions can last as long as you wish, until you close the tool.
(I have found that practicing for no longer than 20-minutes at a time, to be beneficial, perhaps a few times a day or week.)
- -rand2 - Generates only the 26 letters of the alphabet in continuous groups averaging 5-characters (like words).
It leaves a space between the random words, but does not wait for any response from you. The words are composed of random characters.
Do not expect them to spell anything. It is useful to use paper and pencil in this mode.
This mode is good for intermediate code practice because it has a steady rate and includes only letters.
- -rand3 - Generates groups of letters, numbers, and punctuation.
The groups average 5-characters. Some are shorter. Some are longer. Like real words.
It leaves a space between the random words, but does not wait for any response from you.
This mode is good for experts because it contains all letters, numbers, and punctuation at steady rates.
This package contains the cw_trainer1.c source file and a pre-compiled cw_trainer1.exe
for convenience. If you are on a compatible Linux PC, then you may not need to re-compile. You may
be able to run the supplied executable directly. However, if you wish to, or need to, the compilation
instructions follow below.
To unpack: tar xvfz cw_trainer1.tgz
Invoke by: ./cw_trainer1.exe
Compile CW_Trainer1.c as:
cc cw_trainer1.c -lm -o cw_trainer1.exe
Porting CW-Trainer to Other Platforms
I am uncertain about the portability of the sound-card (audio) calls in CW_Trainer to other platforms, such as
Sun Solaris, Mac OSx, or Microsoft Windows. If anyone has hints about how to make sounds on these other
platforms, please let me know. Aside from the sound calls, everything in CW_Trainer should be very portable across
all platforms. The intention is to support all platforms.
Carl Kindman firstname.lastname@example.org