Little games to play with Morse Code in the browser
alexanderell.is
alexanderell.is
https://morsecode.world/international/trainer/trainer.html
Here's a comprehensive list of Morse resources:
I tried to follow the ratios here (https://morsecode.world/international/timing.html) as follows:
var DOT_TIME = 300; // Dit: 1 unit
var DASH_TIME = DOT_TIME * 3; // Dah: 3 units
var SYMBOL_BREAK = DOT_TIME; // Intra-character space: 1 unit
var LETTER_BREAK = DOT_TIME * 3; // Inter-character space: 3 units
var WORD_BREAK = DOT_TIME * 7; // Word space: 7 units
But it's interesting to hear that the timing still sounds off and the characters are not well shaped. I wonder if there are some artifacts in the web audio API related to how it's playing that would cause the difference.Either way, thanks again!
You may want to run the output through a low-pass filter of the Web Audio API, or manually "ramp up" and "ramp down" the edges, so they don't sound so rough/hard.
I spent a few afternoons keying out random silly / vulgar messages. Stuff like "- .... . / ..-. -.-. -.-. / .-- - -. - / .-.. . - / -- . / -...", "- .... . / .-.. .. --. .... - ... / -. --- - / - .- .-.. -.- .. -. --. / -.-- --- ..- / .... .- ...- . / --. --- -. . / -- .- -.." and ".. -- / -- . ... ... .- -.. .. -. -.. / .- -... --- ..- - / -.-- --- ..- .-. / -.-. .- .-. ... / . -..- - . -. -.. . -.. / .-- .- .-. .-. .- -. - -.--". At first I had to look at a Morse reference sheet while keying these in, but after a few hours I was no longer looking at the sheet.
Moral of the story, it only takes a few bored afternoons to learn Morse. You should do it.
I think the second word in the third message is supposed to have a couple of `--.` in place of the `-..`s. And the first one's third word I think is meant to be `.-- --- -. -` (`---` instead of `-` as second letter) instead?
I've been learning the letters of Morse code via Anki for months now (casually, on and off), but I feel like reading them as words here instead of as individual letters cemented them in a different way in my brain. Maybe it's time I graduated on from the letters deck to a words-based deck, it's a pretty fun task too, decoding these.
I also like to organize the letters by complexity/similarity. The least complex are the letters that are the same symbol n times. E I S H for (1-4) dots and T M O for (1-3) dashes. Just ask yourself "IS HE TOM?" The next layer up is letters that are n dots followed by m dashes or vice versa. These are subgrouped into length 4 down to length 2 and ordered from left heavy to right heavy. So the taxonomy is [(1,1) A/N], [(2,1) U/G,(1,2) W/D], [(1,3)B, (2,2) Z, (3,1)V/J]. The third group is actually smaller and thus easier. [(1,1,1) R/K], [(2,1,1)F/Q, (1,2,1)P/X, (1,1,2) L/Y]. The final group is just (1,1,1,1) C.
Writing out the table in terms of these similarities helps. Eg I'd often remember letters in terms of other letters that I use more frequently like "k is the opposite form of r (-.- vs .-.)". Or I would know where the letter sat in terms of layer or skew and I knew what letters it couldn't be. Eg for a while I knew N was length 2, I knew it wasnt .. or .- since I use I/A a lot, so it was just a matter of learning the difference between m (--) and n (-.), Which happens to be the same as the difference between w (.--) and u (..-) after you remove the first dot and turn the page upside down. Obviously u is upside down n and w is upside down m. For the occasional clusters of easily confused groups, learning one forces the others to snap into place. .-.. is off balance to the Left, so it must be L (..-.). -.. begins with a Dash so that one is D. .-- has twice the dashes as ..- so that makes it "double the U" aka W. P (.--.) is similar in shape and origin to rho so it makes sense for it to be similar to R (.-.).
That's about as dense as I can compress it. The rest is rote learning.
I'll second the recommendation of https://lcwo.net . That's how I learned it, and I was able to get up to about 10 wpm after a couple months of practice.
Another thing about learning Morse code is to NEVER try to learn it visually if plan to send/receive aurally. Before I joined the Navy I had been proficient with Morse code at around 15WPM; I was able to read the flashing light codes being sent between ships but I had to "hear the light." The Signalmen had the opposite phenomenon: since they had learned Morse code visually in order to copy Morse code by ear they had to "see the sound." I'm sure between the fields of neuroscience and psychology there could be an interesting discussion as to how that cross-sensory translation takes place but it certainly does.
..... .-... -..-- -.--- --.-. .-..- ..
Sometimes they took it further and had us try to decode call signs and license plates, which gleefully removed that extra layer of context.
-.-.- .-.-. .---- ----- --... .---- -..
Sorry, but this is nonsense.
There should always be character spaces and word spaces to break up the pattern.
Without character spaces, it's not morse!
If you do want to learn code, try the Ham Morse iOS app.
Edit: after a little more research and experimentation, the Farnsworth method you mentioned is actually an even better experience for both listening and inputting - went ahead and added an option for it, defaulting to on. Great call!
The slow setting is painfully slow though - that isn't teaching the right sound of the morse code.
So I'd suggest the minimum letter speed should be 20wpm but with spacing between the letters to make it easier to understand when you get up to words.
Note dot time in ms is 1200/wpm if that helps!
PS speaking as someone who can do morse at about 15 wpm now after having studied on LCWO for quite a few months!
I think it could be fixed with more intelligent stopping (e.g. a strictly increasing play counter that it could check before playing, or something like that). Thanks for pointing that out!
Edit: yup the increasing play counter (and a check everywhere) was enough to avoid the duplicate replays, and it should be better now. Thanks again!
And a suggestion: Pressing that button clears the input, which is annoying when you have partial input correctly entered there.
Great suggestion about the clearing! I think it would be helpful to listen while you look at your input to verify, too.
Edit: fixed the Try Again button (newly renamed "Replay") so it doesn't clear your input. Good call!