ebook2cw - Convert ebooks to Morse code audio files (MP3/OGG)
ebook2cw is a command line program which converts a plain text
ebook to Morse code audio files. It works on several platforms, including
Windows and Linux.
A number of CW and audio parameters can be changed from their default values, by
command line switches or a config file (see below). These are (default values
- CW speed in words per minute 
- Effective CW speed. If set, the spaces are sent at this speed
instead of the character speed set by -w ("Farnsworth").
- Extra Word spacing. Similar to -e, but only affects the inter-word
spacing, not the inter-character spacing.
- audio frequency in Hz 
- set waveform to sine, sawtooth,
- Increase CW speed (QRQ) by 1 WpM in intervals of `minutes'.
Speed will be reset to the initial value at the start of each chapter. 
- Disables resetting the speed when using the -Q option.
- Disables the paragraph separator (<BT>)
- risetime, in samples 
- falltime, samples 
- Use OGG/Vorbis encoder instead of MP3 if compiled with OGG support
- Do not encode, do not generate output files
- samplerate for the OGG/MP3 file 
- MP3 bitrate, kbps 
- MP3 quality, 1 (best) to 9 (worst). CW still sounds very
good with the worst quality, encoding time is greatly reduced. 
-c chapter separator
- Split chapters at this string. [CHAPTER]
- Splits output files after "duration" seconds;
finishes the current sentence.
- Splits output files after "wordlimit" words;
finished the current sentence.
- Output filename (chapter number and .mp3/.ogg will be
- Author for the ID3 tag. Use quotes for strings with spaces
(e.g. "JW Goethe")
- Title for the ID3 tag. Use quotes for strings with spaces
(e.g. "Faust II")
- Comment for the ID3 tag. Use quotes for strings with spaces.
- Year for the ID3 tag.
- Switches input encoding format to UTF-8. Currently supported
alphabets include Latin, Greek, Hebrew, Arabic and Cyrillic. Default is ISO
- Guesses the encoding of `file` (ISO 8859-1 / ASCII or UTF-8).
- Shows a table of all available morse symbols for the ISO
8859-1 and UTF-8 character sets. Output in HTML format.
- When this option is used, a noise background is added to the
file and the CW signal is scaled down to achieve a SNR (Signal to Noise ratio)
of "snr" dB. Possible range of SNR: -10db to 10dB. Make sure to
enclose the value in quotation marks if it's negative (i.e. -N
-B bandwidth in Hz
- Sets the filter bandwidth if the -N / SNR option is
used. Available filters are 100Hz, 500Hz, 1kHz and 2.1kHz.
-C frequency in Hz
- Sets the center frequency of the filter if the -N /
SNR option is used. This should be set to the frequency of the Morse signal;
currently implemented center frequencies: 800Hz
CW prosigns can be generated by enclosing arbitrary letters in angle brackets
(e.g. <AR>, <SK>, ...).
The tone frequency (f), speed (w), effective speed (e), volume (v, 1..100)
waveform (T) and SNR (N) can be changed arbitrarily within the text by
inserting commands, starting with a pipe symbol, followed by the parameter to
change and the value.
Example: |f400 changes the tone frequency to 400Hz, |w60 changes the speed to
60wpm, |T3 changes the waveform to squarewave.
ebook2cw looks for a config file, ebook2cw.conf, in which all settings that can
be changed by command line parameters can be set. Any settings made in the
config file can be overridden by command line arguments.
Additionally, two `map` files can be set in the config file, for ISO8859-1 and
UTF-8. You can map characters in those files to a string, which may be useful
to replace characters like the exclamation mark (!) to a period (.), which is
more common in CW.
A set of example config and map file and a description thereof can be found at
ebook2cw can also be compiled to run as a CGI to serve MP3 and OGG files on the
fly for web applications.
Fabian Kurz, DJ1YFK <firstname.lastname@example.org>