My Bumpy Road to Le...
Clear all

My Bumpy Road to Learning Morse

6 Posts
4 Users
Jed Baer
Joined: 2 years ago
Posts: 83
Topic starter  

Happy CW Month! I feel as if I should call it "Morse Code Month", in honor of Marshall - N1FN (SK), who pointedly made the distinction to me that CW is an emission mode, and Morse is a character encoding. 😀 And, I'm still stuck on Morse, rather than trying to operate CW. I've read a lot of stuff, and looked at many Morse training methods. Seems as if I still haven't found the "right" one. I have some thoughts.

Cognitive linguistics: how do we learn to talk? For almost all humans, we learn by hearing. As babies, we hear words all the time, and gradually learn to associate meaning and structure. Talking is just a part of the larger process of building the linguistic processing part of our brains. What we don't do is start off by learning the alphabet. The other part of it is repetition - mainly not repeating something over and over, as in learning lines for a play, but repeating what we hear - initially single words using only a few letters.

I have yet to try word repetition as a sustained Morse learning exercise, but I think it has promise.

Way back, when I first started trying to work on this, I had a practice buddy. Except that we got together only once, and thereafter could never get our schedules to jive. He and I just went to a park and sat across from each other with our practice oscillators and "sent" simple words back and forth. But we were both doing paper copy, not repeating things back and forth. An example sentence: Mom made me eat mud. That's 8 unique letters. I think it's best to start out with a small subset of the alphabet. Anyways, the idea was that we could get together and just work on it, and add more people if they were interested, and nobody would need to have a CW radio. We had talked about transmitting tones over FM using a repeater, but he lives in a bad spot for that, so it never took off. I still like the idea of being able to practice real send/receive, without needing to worry about band congestion, solar flux, etc., using a key and hearing tones. I know there's some internet stuff for real-time practice, but I haven't looked much into it. I suppose I should investigate a USB adapter for connecting a key or keyer.

Since then, I've worked on it on and off, but always end up getting stuck. I've tried a variety of programs, including a couple things on Android, but so far, the most effective thing has been a script I wrote to play letters on my computer. I also wrote a script to play words, but that's been a little difficult so far, and I'm pondering changing it up some, to provide a gap between words such that I can repeat the word on my practice oscillator. I've been writing the letters as a practice decoding, and possibly that's the wrong approach. But it does let me check my work, since I can compare what I wrote to the screen display, after copying. But I'm starting to think I should just listen and "think" the letters (or words), and judge my progress only by confidence level - I'm pretty good at recognizing when I'm unsure about a letter. Also, I think using words makes this work better, since we can mentally judge whether a sentence makes linguistic sense.

By far, the biggest issue is the "stuck" part. Hard to describe, except it's sort of like writers block. The old brain just refuses to play along. I haven't found a way to move past that. And maybe the answer is to just "play through it". Or maybe use a different method for a while. I'm actively avoiding anything visual, since that's contrary to my concept of aural linguistic processing.

In re. "instant character recognition", I think it has some merit, because it's working on tapping in to the framework we already have for processing language - but, I think to be really effective, it should be done with head copy only. I do wonder whether writing can still be a reinforcement, since it is tied in to the language part of our brains, but still, it isn't the primal method.

In case anyone is curious, here's my bash script. I run Linux. This should be adaptable for Mac and Windoze. Mac already has bash, so finding a substitute for the "cw" command would be the trick. In Windoze, using WSL would also provide bash, and I'm guessing the "cw" program is available too, or maybe convert it to Powershell and find a "cw" program to use.


#   Simple morse train sequence
#   Author - KD0YMG, Jed

CSEQ=(M K R S U A P T L O W I Q N J E C F Y V G Z H B D X / 0 1 2 3 4 5 6 7 8 9 ? . ,)

NCHAR=$1    # number of characters to use
LSTR=$2     # number of characters to send
RPT=$3      # emphasize newest?
#   Build string


for (( i=1; i<=LSTR; i++ ))
   if [[ $RPT == "Y" && $(( $RANDOM %4)) == 0 ]]
       x=$(( $RANDOM %NCHAR ))

sleep 1s

echo $OSTR | cw -w 20 -t 666 -v 20 -g 7
sleep .25s
echo '[SK]' | cw -w 20 -t 600 -v 20 -g 7

An invocation would be (the name of the script is "cwt") cwt 5 20 - "send" a total of 20 characters, using the first 5 in the set. The "repeat" function is for progressing along when adding another character, just to hear it more often, so cwt 10 20 Y would send the letter "O" more frequently.

The other script is much simpler; it just saves me typing the command line.

cw -s a -w 20 -t 666 -v 20 -g 7 -f $HOME/mwords

And the "mwords" file is just a list of words using characters I feel confident with.

For reference, you can read the fine man page for the cw command.

Anyone else still in the initial stages? What's working for you?

Scott AK6Q reacted
Scott AK6Q
Joined: 4 years ago
Posts: 64

Jed thanks for posting this timely piece.   This is the month of MORSE/CW and we are really excited to get hams started on their learning journey, or in a lot of cases rekindling the drive to learn/master CW.

I was proficient 5WPM CW Op when I took my Novice test back in the day, but learning 5WPM was just counting dit/dahs.   A terrible way to learn.  I have been playing with the Koch and Farnsworth methods of faster speed (20-25WPM) but with much greater spacing between words and or characters, this does just what you are talking about and that is learning the sound as opposed to counting the dits/dahs.  I have had some success with this but now it is more a time conflict, I need to make time to consistently sit and listen each day.  

This leads to the next hurdle for me and that is sending...I need a steady diet of both copy and sending to become confident.    



This post was modified 2 years ago by Scott AK6Q

Elecraft KX2 KX3 K3, Icom IC-705 Yaesu FTD3, VX8

Joined: 3 years ago
Posts: 25


Man if I had a dollar for every time I tried then gave up on CW.  

Instant Character Recognition (ICR) is the basis for successful code head decode.

In fact the CWOps Basic Class focuses on this.  We have the students learn to head copy characters at speed faster than they can count.  For some it is 25, some much higher.  

We use as the primary tool (there are others).  We ask that they record their decode in order to go back and see how they did.  No writing anything down, your voice is the reinforcement. 

I know many people can't commit to 1 hour a day for 8 weeks to run through the class.  Thankfully you can go through it yourself by following the curriculum on CWOps

But for those with the time I suggest signing up for the upcoming May-June semester.  But it does takes a commitment of one hour a day for practice (Actually only 6 days a week), plus two one hour video sessions.  

The video session gives you an opportunity to ask questions, hear what the other students are seeing, have a chance to send and receive.  

Others have spoken highly of the Long Island CW Club.  I don't have any first hand experience with their material. 

As for sending code, ditch the straight key.  I had one Basic student start with a straight key.  After some 'peer' pressure (me) he picked up a basic paddle.  His sending proficiency and confidence immediately improved. 

Two types of paddles up for consideration.  One is the dual paddle, the other is a single paddle.  I believe we will have several types of keys / paddles available to check out at the March Elmer night (3/30 @ 6pm).  This would be good time to check out the options.  

And I believe the Face to Face meeting this month (3/22 @ 6pm) focus's on the history of CW and how to get started.  I hope you can find the time to join those two events. 


Dana NN0G

Scott AK6Q reacted
Jeff Karpinski
Reputable Member Admin
Joined: 5 years ago
Posts: 122

Nice bash script!

For Mac users, things are tougher because OSX does not enumerate the audio system as a /dev object for bash to reach.

One workaround is to use txt2wav_osx from which generates morse code audio wav files that can then be played via the standard afplay command line tool in OSX.

There's probably some python code banging about the Internet somewhere for converting text to morse too.

Jed Baer
Joined: 2 years ago
Posts: 83
Topic starter  

Thanks, all, for the encouragement. FWIW, I have a Speed-X straight key, and a Hi-Mound dual paddle. I've found the straight key difficult, mainly due to wrist / elbow issues, desktop height... back when I was last working on it, I could send pretty well for a n00b, but got fatigued pretty quickly. The Hi-Mound paddle works very nicely. I have a keyer (discontinued) from QRP Guys, and a CPO I got from Marshall. The Twin-T oscillator does produce a nice sounding tone - I can't stand to listen to the sound from a square-wave clock chip, and I was quite amazed that the tone from my Heathkit CPO, which is a unijunction transistor oscillator, is even worse - I was expecting - from Heath - something that would be nice!

@Jeff - in my script, bash doesn't access the audio interface directly. The cw program uses the Alsa libraries (I think) which in new Linux systems are just a layer connecting to Pulseaudio, but anyway, it's a C program. Given that it's C, possibly Posix compliant, it might actually compile in OSX, except the calls to Alsa - I'm not sure, maybe OSX has an Alsa compatibility layer? You're right about the Python code - I think I've seen some, and I don't remember where, but it was an odd application, using Morse for some purpose other than ham radio. However, a Python script would be great for a cross-platform tone generator.

@Scott - the cw program I'm using lets me play with timing to my heart's content. the "-w" parameter is WPM, and the "-g" is the extra gap, or Farnsworth delay, between characters. Where I have it set now, it's just enough for me to either recognize the character, or think "uhhhh..." and I was working on not getting stuck on those and just letting myself move on. Sometimes, I could actually have the "oh that's it" while the next character toned, and not lose the next one.

@Dana - I'll put the Elmer night on my calendar, but I admit I dread driving on C470 during the evening rush. Ironically, I did a presentation on the history of Morse for the 285 TechConnect club. You'd think I was good at it. 😝 Do I dare link to my presentation notes? Over the years, I've looked at probably all the major CW programs. I pretty much suck at even pushing myself to do home practice for a half-hour a day - in fact I'm not doing it at all right now. This is where having a practice buddy was supposed to help me. I'll mention too, that the noise floor at my QTH is usually atrocious, plus my HF station, such as it was, is currently not set up anyway. But that's a different story. I'm intrigued by the VBAND and CW Hotspot stuff, but at least right now, not going to spend the money on the hardware.

Jeff Karpinski
Reputable Member Admin
Joined: 5 years ago
Posts: 122

@kd0ymg The cw program indeed complies under OSX but since there is no audio device there's nothing for it to attach to and it errors out. There is no such thing as ALSA or PulseAudio for OSX.

 txt2wav_osx and afplay are easy to integrate into your script with minor modifications.

73, AB0L.