Training fast CW on Android (Koch method)

I am a professional software developer and I spent a huge amount of my time writing and debugging code.

About twenty years ago, I was called by a company to teach C++ to a group of their C programmers. During that course, it happened something that I never noticed before: when they were writing their simple coding exercises, with a simple glance I could list all syntax, semantic and logic errors contained in the source file they were writing.

I was very much surprised by that, because I realized that I was not reading their source files: I kind of “felt” the presence of those errors before even starting to read the screen.

My brain was so trained in associating those coding patterns to the related compiler errors that it was doing it without even me paying attention to it.

That event, being so unusual, attracted my attention: however, we all use this mechanism every day. For example, when we ear people speaking in the background, we understand what they are talking about even if we are doing something else and no paying attention to them.

What we develop to obtain such results are called conditioned reflexes.

I believe that the need for strong conditional reflexes is unquestioned for effective CW operations. So next step is: which is the most effective way to develop such reflexes?

First step, we have to determine what we want those reflexes to be able to do. Reasoning on my experience, I found that I was able to recognize the single letters of the source code, words and syntactical constructs made of such words (for example, a function, a code block); actually, my brain was able to recognize even higher (i.e. more abstract) combinations, such as logical errors.

I am sure that a good CW operator reflexes are able to decode letter by letter, but also whole words and even whole concepts. After all, all of us are able to read single letters but also whole words at once, if not even whole concepts if they are stereotyped.

We certainly have developed such an ability by reading and reading and reading for all of our life. Hovever I am well above my 40’s and I have no time to do this all over for Morse code too.

So I decided to settle for a less ambitious goal, i.e. being able to recognize and type letter by letter at a reasonable speed.

The Android application

Methods exploiting this ideas exists since decades, like the one proposed by German psychologist Ludwig Koch. However, to be real effective, these methods need a computer software able to produce really random sequences at calibrated speed.

On Windows I use G4FON’s Morse Trainer, which is very good.

However, I really felt that there were many times where I had five minutes that I could invest in learning CW, but no computer handy. This is why I wrote the IZ2UUF Morse Koch CW Android application.

This application can be downloaded for free from the Android Market (now Google Play) at this link: IZ2UUF Morse Koch CW.

Using IZ2UUF Morse Koch CW

The Android app is very simple. By pressing the blue arrow “play” button, the application starts playing a random CW sequence on the louspeaker or headphones; in the meantime, the characters played appear on the main screen.

Playback stops when the timer is expired (default is 5 minutes) or when the red square “stop” button is pressed.

The method is simple: start with two characters, for example “K” and “M”. The program plays these two characters only and you just have to recognize and write them down.

Initially it will be hard, but in a few session you will start to understand better and better; do not slow the playback speed, or it will not work! Just enlarge the inter-character spacing or, better, the inter-word spacing.

When you are able to write down at least 90% of a 5 minutes sequence, add another letter and go on.

Your proficiency will drop, but it will be back again very soon.

 

 

Configuration options

The application has several configuration options.

 

 

WPM

This sets the words-per-minute, using the standard morse speed rules.

This should be set at least at 20WPM, better if more.

This value, starting from version 1.0.012, can be changed also with a slidebar on the main screen.

Characters spacing

This settings allows characters to be spaced more than the standard 3-dots time. This allows an extra thinking without reducing the speed of the single character.

In this way our brain can still learn how the characters sound like at high speed and not slowed down. This implements the same concept of Farnsworth timing used by ARRL.

Words spacing

This setting allows higher separation between words. In this way we can train on small sequence of letters at high speed and with normal spacing, but still having time to write them down at the end of the word. I found myself enlarging word spacing more effective than enlarging character spacing.

Tone pitch

Sets the pitch of the CW note.

Dot picth

Sets an higher pitch for dots. This is another learning technique that uses this artifact to easen learning sequences of dots-dashes. The pitch difference should be reduced as soon as the learner’s proficency gets better.

Start pause

This allows setting a pause before the first character; in this way, we have time to settle down and become ready!

Speech mode

New feature! When this option is selected, after each word is sent in CW, a synthesized voice will read each character of the same word
using the ICAO standard spelling (alpha, bravo, etc.).

After having listened the sequence of CW characters, the student repeats them mentally using the ICAO alphabet; after a programmable delay, the voice will repeat the same characters for a check.

This feature has two goals:

  • training hands-free: this exercise can be done while walking, driving or anything else that reduces hands availability;
  • training to quickly remember a few random characters; this is extremely useful to rapidly catch callsigns and other pseudo-random words (locators, names, etc.).

Time before speaking

Time allowed between the end of CW and beginning of spoken words.

Time after speaking

Time allowed between the end of spoken words and the beginning of the next CW word.

Length of the exercise

Set the length of each session. Koch method sets it to five minutes, but I find better 2 minutes on very fast sequences, because after that I start really messing up.

Characters sequence

This allows you to choose among the following options:

  • G4FON sequence – play a random sequence of characters taken from the current Koch level (see below) using the G4FON program sequence
  • LCWO sequence – play a random sequence of characters taken from the current Koch level (see below) using the LCWO site sequence
  • Chars from custom string – play a random sequence of characters taken from the string set in the “Custom string” (see below) option;
  • Custom string – play the string set in the “Custom string” (see below) option; this allows playing any text.
  • Words from custom string – randomly play words taken from the “Custom string” (see below); use “_” (underscore) to join sentences in a single word (e.g. “MY_NAME_IS” will be played altogether as a word replacing underscores with spaces)
  • Words from custom string and G4FON – same as above, but some words will be randomly generated using the G4FON squence.
  • Words from custom string and LCWO – same as above, but some words will be randomly generated using the LCWO squence.
  • Koch training on wordsNew feature! – this feature takes the words listed in the custom string (or loaded from a file) and plays them randomly. This exercise is very useful to memorize entire words at once at high speed.

Koch level

Koch defined in which order characters should be learned. With this setting, you can choose how many Koch characters you want to use.

Hard letters

The “hard letters” feature allows to mark the letters that are harder for us to understand. The program will insist on them, proposing them with a much higher frequency.

Auto hard letters

If set, the last two letters of our current sequence are treated as “hard letters”. In this way, we get an higher frequency for the letters that have been just added to the sequence.

Custom string

This is the custom string which use is explained under the “Character sequence” option.

Note that this string can contain prosigns like <BT> and accented characters.

Loading files

The custom string can be set by loading a file on the SD card. This is done by pressing the file-open icon in the main screen.

Files must have extension “.TXT” and they must be saved in the SD card, under a directory named “cw” (/sdcard/cw).

My personal tips

Reflex jam – When you are working on a set of characters you know very well, you will see that you will able to write them in a continuous flow; but as soon as you encounter a new character, this mechanism will jam and you will not be able to recognize the following characters, even if well known, until you get to focus on it again. My tip is: move to next Koch character only when you get very little jamming on the ones you know: in this way, when you “jam” you know that it must be the newly added character and you do not have to think on it.

Spacing – initially character spacing (see Farnsworth timing) is highly needed, otherwise it would be very frustrating; however, I found very useful to progressively reduce that spacing down to 1x and using the “word spacing” setting. This gives me a little time to think over what I heard but in the meantime I am training actual full speed sequences, including their normal spacing. This is also an exercise to temporarely memorize small sequence of random letters, useful for callsigns and locators.

Garbled audio (solved)

UPDATE (25-Jan-2013): I have been able to setup a device showing this problem. Audio doesn’t work on Android 4.2, while it works ok on 4.0.3. After some tests, I found that the ENCODING_PCM_8BIT setting doesn’t work anymore. Instead, I had to switch to ENCODING_PCM_16BIT, that seems working.

Ham spirit

06-Feb-2013 – I would like to share with you this very kind piece of “ham spirit” that really touched me. Yesterday in my mail box I found a small carton box that contained a nice hand-written letter from DO2CW Thomas. Thomas thanked me for publishing this app, for promoting the diffusion of CW and gifted me with this:

tasto1

It is a Russian “spy-key” combined with a single-lever mini-paddle homebrew by Thomas.

I tried both the vertical and the paddle and both have perfect and confortable movements. The little paddle is a tiny jewel of fine mechanics, really impressive! The entire assembly is very light but though at the same time, sure able to survive my backpack during mountainering with my FT817.

By the way, I was looking for a light key for portable use because every key I have is heavier than the 817 itself, never mind having along both the vertical and the paddle!

Thanks again Thomas!

 

Version history

Version 1.0.001

  • first release

Version 1.0.002

  • on back button execution terminates

Version 1.0.003

  • added accented letters (as defined in Wikipedia morse page)
  • added custom strings playback
  • added playback from custom charset
  • added programmable word spacing

Version 1.0.004

  • fixed error when activating empty custom string

Version 1.0.005

  • replaced zero with slashed zero
  • added 2.5x, 3x and 3.5x spacings
  • added programmable pause before playback
  • changed info page

Version 1.0.006

  • fixed a bug when using spacing 1x

Version 1.0.007

  • fixed screen rotation bug
  • added different pitch settings for dot and dash

Version 1.0.008

  • added programmable word length

Version 1.0.009

  • (never released)

Version 1.0.010

  • hopefully fixed the garbled audio problem on newer devices

Version 1.0.011

  • Full support for LCWO sequence
  • Added pause button
  • Added fast button to immediately load custom files
  • WPM speed can now be changed with a spinner at 1 WPM steps
  • Koch level reports LCWO/G4FON series correctly
  • Added morse dash/dot reminder beside “Koch level”
  • Added file load option
  • Custom strings now support prosigns
  • G4FON sequence extended with prosigns
  • Added support for user defined words
  • Added scrollbar in the main screen

Version 1.0.012

  • Added speech support. When active, each word is read after a pause by a synthetic voice using the ICAO alphabet. This allows exercising without writing: first repeat the characters yourself, then wait for the voice for a check.
  • New “koch word” exercise. Words from a file are presented randomly and have to be mentally recognized.
  • Added user defined hard letters. Some letters can be marked as “hard to understant”: they will be presented with higher frequency during exercises.
  • Added auto-hard letters. This feature automatically define as “hard letters” the last two letters of the current Koch sequence.
  • Made moveable to SD-card
  • When a file is loaded, its name is printed on the main screen
  • Fixed bug: the number of letters used to compose a word were one more than the value selected in “Word length”.
  • Speed now goes up to 100 wpm
  • Added a WPM quick bar on the main screen.

Version 1.0.013

  • Fixed minor bug: welcome screen was reprinted when device was rotated.

 

Comments and suggestions

I hope you will find this application useful and please, do not hesitate to let me know your opinion or if you have any suggesion.

 

73 de IZ2UUF!

Print Friendly, PDF & Email

Sponsored link

53 Comments

  1. Thank you for this fantastic app! The voice incorporation is ingenious, and so pleasurable to put the pen down and close eyes and mentally copy.

    One difficulty I have is, in contrast to the g4fon desktop app which sounds like a pure sine wave, your app’s tone on my phone has a pronounced attack transient. Is that my phone’ s problem, by design, or something else?

  2. Are you aware of a comparable iPhone app? I use your aPP every day back and forth to work but know others with iPhone’s who would like your functionality.

  3. This is a really great app but when I use it every time I accidentally touch the WPM slider and it goes mad.
    Please can you turn this feature off or make it optional,

    • Hello Derek.

      This fix has been requested by hundred of users… ūüôā
      It will be in the next version I’m working on.

      Vy 73, de Davide IZ2UUF

    • What he said!!! Could not believe it when program went nuts. You end up hitting it when you wake up phone or go to center button. Let’s roll back and fix what wasn’t broke.
      Best program I’ve ever used. . ( except that). Thanks

  4. Thanks Davide,
    It is a nice tool for traing cw.
    I am now 77 years and it is verry hard for my but it is all so good for my brain (hi hi)
    I like cw.
    Albert, PA3GXD.

  5. I would like to have a vocal announcement when the sequence is thru. I use speech and after some time the display is black, of course.
    For me it would be very helpful, if I could enlarge the letters on the display. My eyes are very bad.
    Some of the spoken letters sound rather funny. Sierra sounds like C arr, Romeo like fromlo or ronglo

  6. Hi Davide,

    I have downloaded your android app and was enthralled.
    This app is exactly what I was looking for after becoming a bit rusty with cw.
    I created some sample files with an android editor and things were running fine. Although tipping in texts on an smartphone screen is a bit tiresome so I decided to write the files on the desktop PC and copy them into the smartphone.
    Unfortunately it does not work, your app doesn’t open the folder “CW”. the files are not hidden or so everything seems normal.
    What can I do? please help
    Michael
    CT1DUD

    ct1dud@gmail.com

    • covert your windows txt file to unix txt files. eg; dostounix program.

      win uses carriage return & line feed and unix/linux use line feed.

      some txt editors allow you to change end-of-line characters

  7. Thanks for writing this app. I love the voice feature it is exactly what I like wanted so I could quiz myself in my head while driving.

    I do have a request.

    Please add longer times than 15 minutes. I have a long commute and would really like something such as 30minutes or even 45minutes of continuous exercises.

    Thanks!!

  8. Many thanks for this application, I find it extremely useful, as I can take morse training anywhere with me, on the way and from work in the train, etc. I would love to have the option to select longer ‘Length of Exercise’ if possible, please, say up to 30min or even more, as Don mentioned before. Best, Kostas.

  9. Hello.
    Many thanks Your APP.

    How we can PUT to ONLY out the letter we want, like:
    Only A W J …..

    Thanks.
    Carlos, CT1GFQ

  10. Ciao.sono iz1mke.
    Hai fatto un lavoro superbo. Veramente. Ti ringrazio molto. Hai perso ore del tuo tempo ed anche di sonno, ma quello che hai fatto perdurr√° anche dopo di te. Ciao

  11. Hi Davide,

    This application is excellent. Proposals:

    1. Need a much longer interword spacing, for instance when testing copying at 30 WPM when you can write only at at 15 WPM. It is not so good to test at 15 WPM, just because you cannot write faster. The temporary solution is to use the speech mode with a sufficient delay.

    2. Some instructions for training would be needed.
    2.1 At what WPM value and what word length should you test above 90% before moving on?
    2.2 Train first for full alphabet and add speed later? Or speed first?

    I find it hard to remember more than three random characters at high speed, but I feel unwilling t go below 20 WPM for other reasons than a test without the speech mode.

    3. instead of the tricky WPM slider, + and minus buttons would be more suitable.

    4. Some voices need correction, Sierra, India (too electronic), … The voices should be more similar in character.

    Thanks for you great work!

  12. Great app! I’ve been using the koch sequence 4 about 2 months & have gotten to “=”, using speech mode! But the speech misfires @ “=”. There isn’t any audio for “equals”. I just get a silence. (Whimper). I’m sure I can get past this but I thought I’d mention it.

    Thanks for the app.

    • Hi Rick,

      I have the same problem. It is kinda throwing me when the audio is not there for = or .
      Do you know if there is a fix for that, or can you remove the = or . symbols?
      best regards

      Martin.

  13. Sir, I am appreciative of this very flexible learning tool. It is excellent. My only suggestion is to allow the app to pause when it is in background. For example, if I receive a phone call, the Morse code continues. This is difficult to stop: as soon as the phone detects the call, the Morse app is covered by the phone app and I can only answer the phone not stop the Morse. Everything else is excellent and I appreciate you sharing the app.

  14. Hi Thank you very much for this app! I use it a lot, however I do have a problem. I am a very raw novice, and I am aware that although I can recognise the faster character speed, which I would like to keep, I need, at this early stage, a fast character speed, and a slow word speed, with large word spacing. I have char spacing as 8x and word spacing at 8x. Is there a way for me to keep the wpm setting up (ie the character speed) but increase character spacing more than 8x pls?

    • I had the same problem. I found that by setting WPS=20, WordLength=1, WordSpacing=8, CharacterSpacing=8 then it was the slowest.

      I timed it, and on my phone it is about 5wps total.

  15. Dear Davide, thank you very much for this excellent CW-training app usable on Android. I like it and I use it often. I know well CW but training is always fun. Mostly I run “IZ2UUF Morse Koch CW” with 28 wpm, I write this down almost error free and I enjoy the sympathetic voice which reads the 5 letter words I wrote after each word. Texts out of memory are less attractive for me, I prefer random texts as your app generates it very well.
    Vy 73 Karl DL1MEB +

  16. In speech mode, program will generate code for = sign but not say it. It will generate same code as . If custom string contains speech will say new paragraph. If custom character string contains = it will generate same code but say nothing.

  17. I guess the LCWO sequence contains the = sign, while the G4FON sequence contains the new paragraph character and the other prceedural signs. The speech mode must be based on the G4FO sequence, which does not contain the = sign, so that’s why it doesn’t say anything for that character. Just four more characters to go in the LCWO sequence, and then I will switch over to the G4FON sequence to review the procedure signs.

    Great app! ,but it doesn’t auto scroll up at the last line of the screen display, so I have to do that manually. Also, it would be cool if the app played the code sound for the character first and then displayed the character rather than showing the letter first and then playing the code sound. Sound first and then seeing the letter might make for quicker learning. Still, I think this is the best Morse code app around! Great job!

  18. Great app but desperately needs a choice between playback of letters spoken as they are said in Enlish without phonetics as opposed to the phonetic alphebet version. When copying at 20+ words per minute I, and most hams aren’t thinking “Delta Echo Kilo Four Kiko Oscar Echo Xray” We are copying, thinking and writing with pen to paper “DE K4KOE.” So if you could add in an option to change the voice to speak actual letters and not phonetics that would exponentially increase your app to the best.
    Keep up the good work!

    • Hello Carson.

      I recently begun working on the new version of the app that includes this feature too.

      Vy73 de Davide IZ2UUF

  19. Hello,
    how I can open custom file? I try many different directories but it doesn’t work ūüôĀ
    I have “Choose file form /storage/emulated/0/cw” but I don’t have directory like this.
    I put cw directory on main but it doesn’t work either.

    This app is a great work.

    Regards Mirek

    • Hello Mirek.

      I’m working right now on a new version of the app that has a more powerful file-searching method.
      In the meantime, if you can’t open the files from a directory, you can simply copy and paste the text in the “Custom string” field (last entry of the configuration options).
      Actually, the “load file” function does nothing else than opening the file and copying its contents in the “Custom string” field.

      Vy73 de Davide IZ2UUF

      • Hi Davide,
        thank you for your replay.
        It is some kind of resolve. I need to learn how to copy&paste on android hahaha.

        Thank you for your job.

        Vy 73 de Mirek

  20. Hello!

    Thank you very much for this great app!
    I am using it alot together with g4fon applikation.

    I discouvered recently that I can’t add prosigns like to the custom string. Well… I can but it will appear as when I run a session. It works well with prosigns like and . It’s possible to use + instead but then I can’t set + as a “hard letter”. Is it a Phone issue (character encoding), a bug or is it me doing something wrong?

    Best regards,

    Torbjörn

  21. Hello and sorry for my many posts… I tried to use “” in my post but it doesn’t work… Prosigns added to the custom string ike AR will be interpreted as AA. It works well with AS and BT. I can use + instead of AR but i can’t set + as a hard letter.

    Best regards

    Torbjörn

  22. Thank you for a wonderful app. I use it during my daily commute.
    I would like to suggest a feature: a setting to repeat word groups n times. So, a random “word” or take a word from the custom string and repeat it n times before generating or selecting the next word. When speech is turned on, repeat the word those n times before that word gets “spoken.”
    I think that will help with the repetition and the recognition of blocks of code.

  23. Hi, cant seem to add more letters in the Koch list, when trying to select it only accepts one letter then goes to previous window, otherwise looks like good programme.
    Many thanks in anticipation for your assistance.

  24. I had to learn cw back when I got my licence a number of years ago. I learned it for the test but didn’t stick with it. Now I’m much older and learning it for fun. Your app has made all the difference and was exactly what I was looking for. Thanks so much for creating it.

  25. Would you consider releasing the apk file directly for download on your website? I’d love to install this on my Amazon Kindle, but it doesn’t support the Google Play store. Thanks!

  26. Hi IZ2UUF, thanks for the app. I practice at 60wpm on my way to work every day. I can’t thank you enough for adding the text-to-speech feature.

    I have an idea to make my practice sessions less frustrating, which may be too odd/specific to incorporate into your app, but I’d love to hear your thoughts. (I have already incorporated it into my own Matlab practice script.) I call it Tower of Hanoi spaced repetition (after the Tower of Hanoi backup scheme). The idea is that when I hear a sequence (e.g. “MUKMK”) and get it wrong, I’d really like another shot at it! (After all, I find that sequence much trickier to decode than say “KMMMK”.) So, assign to each letter A-J a randomly generated sequence (e.g. A = “MUUMK”, B = “KMKMU”, …). Then, quiz me on those 10 sequences in the following order: DCDBDCDAEDECEDEBFEFDFEFCGFGEGFGDHGHFHGHEIHIGIHIFJIJHJIJG. Notice that (except for A-C) each sequence appears exactly 4+2+1=7 times, and its frequency decays exponentially, after which you should have mastered that particular sequence (in theory).

    Spaced repetition is a powerful learning method, and there may be other ways to incorporate it into your app. The example I mentioned was just my first thought.

  27. Thanks Davide for your App.

    I started recently with Morse training and the biggest advantage is to
    continiue hearing when the display is switched off.

    Suggestion:
    When the user touch the time on the training screen, open directly the “Exercise length” setting.

    mille gracie for your app.

    73 de Detlef, DM4ME

  28. Very well thought out app. Many fine-tuning options, yet simple to set. You must have experience in creating good UIs.
    Also, great to be able to listen with display off.

1 Trackback / Pingback

  1. Morse Code Night 18th April. | Welcome to The North Kent Radio Society

Leave a Reply

Your email address will not be published.


*