Thomas Martin, DF7TV, Stuttgart, Germany

Back to DF7TV homepage

Morse Code Processing

(circuits and software related to Morse Code signals)

DF7TV: Symbol to label the side tone output socket

sineCW60 — Regenerative Code Practice Oscillator


AA0HW DF7TV sineCW60 VST3 plugin in DAM Host (free) by Davidson Audio & Multimedia

The Regenerative Code Practice Oscillator sineCW60 (software) provides a configurable Morse Code monitor tone of high-quality

Chuck, AA0HW, started the sineCW project in 2014. He presents several versions of sineCW... as a VSTi (Virtual Instrument) plugin in YouTube videos, the QRQcwnet forum and the iCW group.

The program SynthEdit by Jeff McClintock provides a simple method to make a VST plugin. Just drag and drop several ready-made standard components/modules (input, output, oscillators, filters, switches, sliders etc.), set their parameters, wire them and, finally, export the SynthEdit structure (circuit) as a VST plugin. No programming skills are required.

sineCW60 is based on one of Chuck's designs. Due to numerous changes, sineCW60 now is a 64-bit (VST3/VSTi) stand-alone plugin — no further plugins are required for its application. The plugin has been applied in setups for Internet-CW (iCW) via SonoBus and via Mumble, and in setups for training sending Morse Code.

It's straightforward to apply the plugin in a VST (Virtual Studio Technology) host, like the minimal and free plugin host DAM Host by Davidson Audio & Multimedia. To create a monitor tone at the output of the VST host's sound card, feed a keyed square wave signal with a fixed frequency in the range from 4 kHz to 5 kHz and with a fixed level in the range from 1 V peak-to-peak to 2 V peak-to-peak to its Line-In input.

As an example, the astable multivibrator KeySWcw can be applied to provide a suitable input signal to sineCW60. KeySWcw can be keyed by a straight key or by an electronic keyer. A further example to provide a suitable input signal is shown as WK3 WinKeyer Side Tone Output Modification.


Three options for the OUTPUT KEYED TIME , relative to the keyed time of the input signal, are provided:

  1. MAINTAIN TIME (DELAYED)
    • Keyed time of the output signal equals keyed time of the input signal.
    • The output signal is delayed by the FALL TIME in relation to the input signal.
    • Subsequent silence time of the output signal equals subsequent silence time of the input signal.
  2. + 1/2 FALL TIME (DELAYED)
    • Keyed time of the output signal equals keyed time of the input signal plus 1/2 FALL TIME.
    • The output signal is delayed by 1/2 FALL TIME in relation to the input signal.
    • Subsequent silence time of the output signal equals subsequent silence time of the input signal minus 1/2 FALL TIME.
  3. + FALL TIME (NOT DELAYED)
    • Keyed time of the output signal equals keyed time of the input signal plus the FALL TIME.
    • The output signal is not delayed in relation to the input signal.
    • Subsequent silence time of the output signal equals subsequent silence time of the input signal minus the FALL TIME.

The behaviour of the third option + FALL TIME (NOT DELAYED) is the same as of a keyed square wave generator, followed by an active/passive band pass filter for cleaning the harsh square wave sound. As soon as the key is closed, the output signal starts. When the key is opened again, the output signal will continue for the fall time of the filter.

Ten different EDGE SHAPEs for the envelope curve of the output signal during rise & fall time (edge shaping) are available. Their sound ranges from soft to pointed/punchy and depending upon the user's preferences, he may select the appropriate EDGE SHAPE. The FREQUENCY ranges from 300 Hz to 1300 Hz, the RISE & FALL TIME from 2 ms to 12 ms. The OUTPUT LEVEL can be set by the VOLUME slider from silence (about -140 dB VU) to 0 dB VU.



As an example of use, an edited text passage of the book The Art and Skill of Radio Telegraphy (ASRT) by William G. Pierpont, N0HFF (2002) is used as Morse code input to sineCW60. For both recordings of the output signal, the EDGE SHAPE AP1 (1.60) has been selected.

Speed is 25 wpm (words per minute), OUTPUT KEYED TIME set to MAINTAIN TIME (DELAYED), RISE & FALL TIME value is 10 ms:


The same text passage — speed now is 60 wpm (words per minute), OUTPUT KEYED TIME set to + 1/2 FALL TIME (DELAYED), RISE & FALL TIME value is 7 ms:



AA0HW-DF7TV-sineCW60-VST3-plugin-edge-shape-functions

sineCW60's EDGE SHAPE Functions

The names of the functions and the respective values of maximum steepness (slope) of their curves mmax are displayed in the EDGE SHAPE drop-down list of sineCW60's user interface (e.g. "AP1 (1.60)"). When selecting an edge shape, strive for best readability of your code.

Function AP1 provides an approximation to the first half of a Slepian (PSWF) window [5, DPSS for NW = 2.18], considered suitable for shaping high-speed Morse code (Thanks to Chuck, AA0HW and Wally, K5TO). Function CF is a degree-3 cosine polynomial that, from 30% of the rise time on, gets close to the implemented Slepian approximations APi. The Gaussian[6] shapes GS, with carefully chosen parameter σ (sigma), and the Raised Cosine[7] function RC, are well known for shaping Morse code elements. The sound provided by the degree-2 cosine polynomial CK is a bit more punchy than that of RC-shaped code elements.

Some properties of the Bohman window function BM have been evaluated by Harris[8, p.67, eq.(39)]. It sounds considerably more punchy than the Gaussian shape function GS2. Function CP has been inspired by, but is not equal to, the first half of the Nuttall Minimum 4-Term window[9, p.89, eq.(37)]. CP provides the most punchy sound of all edge shapes available in sineCW60.

Just as a sidenote: All edge shape functions, that reached a good rank in my personal "song contest", are shown by solid lines in the plot and have a maximum slope mmax = 0.5 π +/- 5% 😏

DF7TV-sineCW60-edge-shapes-60wpm-DIT

A "DIT" at 60 wpm

Note: The sample rate and the bit depth of the VST host's sound card influence the quality the output signal. A consumer–grade sound card (Behringer UCA222 [3], for example), providing a sample rate of 44.1 kHz or 48 kHz and a bit depth of 16 bit, is more than adequate for the intended purpose under consideration.

AA0HW-DF7TV-sineCW60-VST3-plugin-keyed-time-options

sineCW60's OUTPUT KEYED TIME options

Note: Setting the RISE & FALL TIME to 1/2 DIT time is an extreme case (a very large value). This setting has been chosen to clearly show the different options for OUTPUT KEYED TIME in this illustration. On the other hand, if we regard an input signal at a speed of 60 wpm (DIT time = 20 ms), then setting RISE & FALL TIME to 10 ms leads to exactly the relations between the input signal and the possible output signals shown in this illustration.
AA0HW-DF7TV-sineCW60-VST3-plugin-structure

sineCW60's "circuit" in SynthEdit 1.5



📄 Download sineCW60 zip-archive version: 1.2.6 - June 1, 2025
Note: Plugin sineCW60.vst3, as well as SynthEdit 1.5 project and skin files are included in the zip-file. You do not need to install SynthEdit to run sineCW60 in a plugin host. When you have downloaded and unzipped the sineCW60 archive, just move the complete sineCW60.vst3 folder to the VST3 folder on your computer. Further details are provided by the Installation Instructions for Windows 10 64-bit Systems.

Links to download DAM VST3 host and for additional information:

KeySWcw — Astable Multivibrator with Key Input


DF7TV-KeySWcw Astable Multivibrator with Key Input
The astable multivibrator KeySWcw provides a suitable input signal to the VST3 plugin sineCW60 . To control KeySWcw, a straight key or the key output of an electronic keyer (WinKeyer, K3NG Arduino CW Keyer etc.) is connected to input CON1. The supply voltage is 5 V, the output frequency is about 4.4 kHz. When keyed, KeySWcw provides a square wave signal at output CON2. The LINE-IN input of the VST host's sound card is connected to CON2. According to the settings in its user interface, sineCW60 provides a regenerated pleasant monitor tone at the VST host's sound card LINE-OUT output.

WK3 WinKeyer Side Tone Output Modification


DF7TV: Schematic of the WK3 WinKeyer Modification to get the side tone out

A modification of the K1EL WK3 WinKeyer USB-SMT Kit [1] is shown. Adding an insulated 3.5 mm stereo jack socket [2] (Multicomp-pro No. MJ-073H, just below the PADDLE input jack socket) allows to get a square wave side tone audio signal out of the WinKeyer. The side tone frequency of the WK3 WinKeyer can be set from about 400 Hz to about 4 kHz. Set to a frequency of 3906 Hz (the maximum side tone frequency of the WK3 WinKeyer), this square wave signal can be applied as a suitable input signal to the VST3 plugin sineCW60 . The use of an insulated socket preserves K1EL's well thought out system to avoid ground loops in the WinKeyer. (Keep in mind however, that the SP1 "-" PCB-pad is connected to the MJ-073H shield. An audio coupling transformer may be used to achieve isolation between the ground of an external circuit (connected to the MJ-073H socket) and the internal SP1 "-" PCB-pad of the WinKeyer.)

The 10nF capacitors shown in the schematic are ceramic, the 1µF capacitors are of the film/foil type. The 180 Ohm resistor sets the output amplitude of the circuit and may be replaced by a value which fits the needs of the individual application. The parts are soldered to a Prototype PCB stripboard. This board is fixed to the bottom of the WinKeyer's case by a Velcro tape close to the battery holder. For my setup, the output of this circuit is connected to the Line In input of a consumer–grade sound card [3] (input impedance of approximately 27 kOhm) and a 180 Ohm resistor to set the output amplitude proved to be well suited. Parameters of the WinKeyer 3.1 CW Processor/Keyer IC are found in its data sheet [4].

WK3 WinKeyer with side tone output, Prototype PCB WR Rademacher VK C-711-5 Copper HP Stripboard 5.08mm Pitch WK3 WinKeyer backside with side tone output jack socket

Internet-CW (iCW) Mumble Servers in the U.S.A. and in Germany


Address and port of InternetCW-iCW-Mumble-Server U.S.A. Address and port of InternetCW-iCW-Mumble-Server DL

References

(Links will open in new windows/tabs)