MORSE is a Morse code training program for Unix‐like systems. It is based
on an old MS‐DOS program from 1996 for Sound Blaster Pro. This Unix
incarnation is not quite as featureful as the DOS one, but it’s still
useful. It’s possible to build the program in Cygwin, but it’s up to you
to find out how.
You will also need the libstrutil, libttyinput and libansicon libraries.
Mats Peterson <matsp888
at yahoo dot com>
- • Merged the librlutil and libttyutil libraries into a libttyinput
- • tty.c, tty.h: Removed the files, and factored out the getwch()
function to a separate library.
- • tty.c: Minor optimization.
- • tty.c: Factored out ANSI console stuff to a separate library.
- • Checking for the Escape key used a lot of CPU time; reverting to
- • Simplified the Escape key handling.
- • tty.c: New file that implements, among other things, a getwch()
function that reads a wide character without buffering and echo, in a
similar fashion to getch() in DOS.
- • Finally settled on using the Escape key instead of Ctrl‐C to exit
from playback, since it’s now justified after the addition of tty.c.
- • Added a Makefile for Cygwin.
- • Revert to using Ctrl‐C; it’s simpler after all.
- • Use the Escape key to stop playback instead of Ctrl‐C.
- • Various fixes.
- • Added support for 24‐bit packed (SND_PCM_FORMAT_S24_3LE,
AFMT_S24_PACKED) sample format.
- • Simplified the building process; now using a single Makefile for
both ALSA and OSS instead of separate Makefiles and build scripts.
- • audio-alsa.c, audio-oss.c: Error handling fixes in
- • Added two simple build scripts in order to avoid excessive
- • Added support for ALSA (Advanced Linux Sound Architecture).
- • audio.c (write_audio_buf): New static function that handles EINTR
and short writes.
- • audio.c (zero_audio_buf): New static function to (hopefully) avoid
pops when closing the audio device.
- • audio.c (put_audio_buf): Slight optimization.
- • init.c: Changed the default audio fragment size to 13 (8192 B).
- • audio.c: Check return values from SNDCTL_DSP_SETFMT,
SNDCTL_DSP_CHANNELS and SNDCTL_DSP_SPEED ioctl()s.
- • Limit line length of random text to 72 characters.
- • Various fixes.
- • Added the German letter ‘Ü’ to morse.sym.
- • Added support for 32‐bit audio, for whatever it’s worth.
- • Simplified the audio calculations.
- • Added support for 8‐ and 24‐bit audio. I’m not quite sure whether
24‐bit audio works correctly, since I can’t test it here. Please notify
me if there are any problems.
- • Added limit checking of numerical input (like it’s done in the
- • More efficient audio handling; precalculate the number of samples
for tones and spaces.
- • Input of values is now done with GNU Readline.
- • The configuration files are now stored as text rather than binary
data. Please remove any old configuration files. This will (hopefully) be
the last time.
- • Now using floating point for WPM and dot/dash lengths. New tone
rise/decay setting for a more pleasant sound. Please remove any old
configuration files, since the format has changed once again. Sorry for
- • Now using volume percentage instead of the previous slightly
cryptic decimal value ranging from 0 to 1.
- • Lots of changes. Please remove any old configuration files, since
the format has changed.
- • The Morse code symbol definitions have been factored out to the
file ‘morse.sym’, which can be customized if necessary.
- • More refactoring.
- • Improved audio handling. Factored out audio, tone generation and
utility functions to separate files.
- • Lots of internal changes.
- • Various changes.
- • Minor simplifications.
- • Initial release.