Anyone can learn to decode Morse. A few get really good at it. But, how well can a machine do it? I am going to find out.
Ten years ago, I started writing some Windows software to transform Morse Code audio into printed text. A few years later, I adapted the ideas to the Arduino. Recently, I came across my original source code to decode Morse and thought I would finish the project. This should help me enjoy CW on the higher bands during the current sunspot cycle.
Have you ever gone back to an incomplete software project a decade later? Well, I can tell you, it’s not as easy as picking up where you left off. After a few days of messing around, I decided to start from scratch. Fortunately, I had saved my reference materials.
In its simplest consideration, Morse Code is just a temporal or time pattern. It has some basic timing ratios for dots, dashes and various types of spaces. And, at least in theory, Morse lends itself to temporal scaling. As long as the ratios remain the same, speed does not matter. In many respects, CW is music.
Writing software to decode Morse in its ideal or perfect form is almost trivial. But not so in the real world.
Rarely will you hear perfect code over the radio. First, senders are usually people, with a huge amount of variability in their sending. Second, even if CW is machine generated, reception is subject to interference and noise.
Decode Morse with my DIY Software
So, I am writing two versions of my Morse Decoder. Version #1 will focus on decent code in noisy conditions. By “decent”, I mean within 10-15% of the standard ratios, even if the speed varies over time. Version #2 will add algorithms to accommodate greater variability in the dot-dash-space ratios, i.e. poorly sent code.
I am almost finished Version #1 and it looks like it should cover maybe ¾ of the code I receive.
In future articles, I will discuss and describe all the major considerations in writing software to decode Morse.