(Showing off the timing detection capabilities. Only the first few characters are wrongfully decoded while adjusting from 24WPM to 12WPM.)
Two weeks ago I thought writing a morse (aka CW) decoder would be a fun weekend project, and so I did it. As an additional challenge I decided to only rely on integer math, which forced me to rewrite core parts of multimon-ng. The resulting decoder also has basic threshold detection, as well as the ability to automatically adjust the timing. Note that there are several new parameters to adjust these options. In preparation for a morse encoder which I might write as well, I’ve revived multimon’s counterpart “gen” and gave it a nice qmake-file called “gen-ng.pro”. Building it works analog to multimon-ng.
Get it at GitHub: https://github.com/EliasOenal/multimon-ng
The CW decoder has a bunch of parameters worth tweaking. Also make sure to bandpass the signal as closely as possible. If you plan on using it, have a look at Matt’s blog: Matt’s RF Stuff
(I just felt like my low pass implementation was quite decorative.)