Using AirPods as a Morse Transmitter

13 days ago (github.com)

What I really need is for the buzzer in the phone to buzz out Morse, so I can get information about who's sending a message without taking it out of my pocket. Maybe even for short messages just play out the whole message. First I guess I need to learn Morse though.

  • I'll put in a vote for: https://lcwo.net/ (Learn CW Online)

    If your goal is to be "conversational" in CW I suggest you crank up the character speed until you are not able to count individual dits/dahs anymore. This will probably be somewhere in the 25-35WPM range. The goal is "instant character recognition" where you hear the sound/shape of the entire character rather than counting elements, assembling them in your head, and doing a mental hash lookup on the result.

    If you have trouble receiving or copying down the 5letter groups at this speed resist the temptation to add "farnsworth" spacing (extra gaps between letters). Instead increase the word spacing until you have enough down time in between to get everything copied.

  • May I recommend the learn Morse with google page?

    https://morse.withgoogle.com/learn/

    I went through it a few times in a day and felt confident enough to be able to solve the Morse puzzles on my own in Keep Talking and Nobody Explodes when playing with friends. The site made it pretty easy to pick up!

    • Thank you for this website. I tried so many time learning Morse and often failed. With this site, I picked up half the alphabet in 20 mins. All I can see now are "Tape", "Submarine", "Hippo" etc.

      3 replies →

  • I had this exact thought the other day, I could make morse code vibration patterns for whoever is calling/texting so I know who it is without looking :)

    btw small world, I assume you're the person with the same name on other sites going back many years .. I was someone who got in touch with you like.. easily 20 years ago about some networking stuff... chatting in a cove-like space :)

  • I have thought about writing a program that makes Morse Code ringtones that could used for contacts. Next step would be program that changed the ringtones for contacts to the name or whatever was entered.

    Unfortunately, I don't think it is possible to control vibrate patterns, at least not for notifications.

This is a cool toy, I've been wanting to do something similar with my flipper zero to make a BT morse keyboard.

This also reminds me of TapXR, which I would totally buy if did morse, instead of inventing their own encoding. I get it, theirs is probably way faster but fluency is morse is more general purpose.

  • > more general purpose

    Just how general purpose is it these days? I learned it for amateur radio (a couple years ago), which is probably the only “common” place to use Morse. And even there it’s all but dead

    • Continuous Wave / Morse is definitely not "all but dead". In fact, it's in literally continuous use, 24/7, worldwide. If you turn on an HF radio (and have an antenna up) and tune to an open band, you will hear morse code.

      Go here and see a live map of CW contacts picked up by the Reverse Beacon Network in the past 10 minutes (only the most recent 100, which is the most I could get it to show at once): https://www.reversebeacon.net/main.php?zoom=44.44,6.37,2.40&...

    • It's getting more and more popular within amateur radio. If I look on the Parks On The Air spots page, there are currently 20 people in a park across the US doing Morse, and I know that when I go to a park I can knock out 60 Morse contacts in about an hour on one band since there are so many hunters.

      Clubs like Long Island CW have thousands of members and run classes all day to teach people Morse and help with their operating skills. Just this morning I joined the weekly CWOps mini contest which is so popular they have it in 4 x 1 hour sessions. And that's on top of the 3 medium speed sessions on Mondays, and 2 slow speed ones.

      There might not be as much ragchew activity but between contests, DXers, and POTA, there's CW activity all over the bands.

    • There was a downswing awhile ago because the macro users switched to using digital modes. People who want to make handmade CW contacts are still having fun and that is attracting some people to the space.

      Also, knowing Morse has been my escape room superpower. Escape room designers love Morse.

      1 reply →

    • all (RF) navigational aids in aviation have a more code associated. It's actually required to identify them (by listening to the morse code/looking at the decoded morse code in your panel) to be able to use them for instrument navigation. So that means a big part of all GA flights and pretty much any commercial flight at any point in time in the world are using morse code.

Another method -- Why not use one airpod to emit a constant sinewave and then use the other airpod's microphone listen for the amplitude of that sine wave to detect whether or not the microphone hole it is covered by a finger? I think it could make for a much faster and more efficient morse input, since you can detect dots and dashes directly instead of requiring a double-press as a dash.

There's a good chance you could also just do it with the amplitude of ambient noise and forget the sine wave generator.

Because of how it works you can also key using the pause and next multimedia buttons on your keyboard. Now we need to make the snake eat its tail by rigging an Iambic paddle to send pause/next events.

Neat! I wonder if both airpods could be used more like paddles for dot/dash, rather than one click for dot and two clicks for dash.

I guess the interesting thing here is that it's being simply handled by JS:

    navigator.mediaSession.setActionHandler('pause', () => {
      press('.')
    })
    navigator.mediaSession.setActionHandler('nexttrack', () => {
      press('-')
    })
    navigator.mediaSession.setActionHandler('previoustrack', () => {
      inputCodes = ''
      showInput()
      say('backspace')
      clearTimeout(timerId)
      txtOutput.value = txtOutput.value.slice(0, -1)
    })