The command line program cmorse is a morse training oscillator. Its a morse practice tool. You can connect a morse paddle or straight key via a arduino to your computer as input device. The Arduino will emulate a USB Midi instrument and allows low latency keying.
- Keying mode: IAMBIC B / Straight Key
- Blackman Harris ramp-up for ultra soft keying without click (Details: QEX May/June 2006 3 / CW Shaping in DSP Software)
- Output of decoded text keyed text according international morse code.
- Low latency optimized
- Mac (development system)/Linux/Windows 10/11 (MINGW64)
cmorse is written with low latency in mind to achieve 25-40 WPM keying speeds. To C programming language is used to support direct access to Audio/Midi interface of the operating systems. This is the main difference on other earlier attempts to implement high speed morse keying on a PC.
You need to have software/hardware to support it. Particular wireless (bluetooth) audio are tested to by horrible slow and simply not usable. You need in general switch the audio to the build in audio hardware.
Additionally your PC should not run performance intensive software in the background like Virus Scan or Windows Update.
The software was developed on Mac(Intel) and ported to Windows and Linux operating system. In this early stage I only provide the source code that need to be compiled using cmake.
On MacOS clang is used and GCC on Linux. Windows was tested to compile with MINGW64 that provide a minimal Posix libraries (e.g. pthreads), this is the reason why Microsoft compiler is likely unable to compile cmake.
To physically connect a morse key we provide arduino sketches for the Arduino Teensy and Arduino Micro in the "arduino" folder. Please notice that this sketches do only work on Arduino devices that supported by the MIDIUSB library or the respective Teensy Family and do for example NOT work on the Arduino Uno.
By default the sketch would configure pin 2/3 as Pull-Up Input for dit/dah contacts and a common connection to ground. The connection from the Morse key can be directly to the respective pins.
With the Teensy 4.1 I measured the lowest latency and should be preferred if high speed keying is important.
The program has the following command line parameters:
./cmorse --help
cmorse 0.1 - (c) 2024 by Thomas Fritzsche, DJ1TF
cmorse [-w wpm] [-f frequency] [-p frames per package] [-h]
-w wpm --wpm wpm
Specify the speed of the keyer in words per minute(wpm).
The default speed is 25wpm.
-f frequency --frequency frequency
Set the sidetone frequency in Hertz.
The default frequency of the sidetone is 500Hz.
-p frames --package frames
Specify the number of number of frames that is processed at
once by the audio subsystem. Typical values are 32,64 or 128 frames
The smaller the number of frames the lower the latency.
Default value for the number of frames is 128 frames.
-s --straight
Straight key mode.
-h
Print this help text.
Please notice the cmorse will use the default audio device you setup on your computer and the first MIDI input derive. If you have connected multiple Midi hardware to your computer you need to disconnect it.
The code is in pre-beta stage and provided as is. There is no guarantee it works correct. So usage of this software is at your own risk. As of the early stage the software is likely to change frequently without prior notice.
0.1 - Initial Alpha Version.
- cmorse is provided as public domain.
- the library mini audio is used by cmorse to connect to the different audio system on Mac/Linux/Windows.