Training fast CW on Android (Koch method)

Introduction

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.

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!

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 level

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

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

 

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!

Comments   

 
0 #28 IZ2UUF 2013-05-10 06:02
Hello Ricardo

Quote:

You could add characters Brazilians?
Ricardo, the application already supports all the characters you have requested.
It does support all the characters listed as "Non-English extensions" on Wikipedia.
You can't select them from the "Koch" sequence because they are not part of the "Koch" sequence. But you can:

  • open "Custom string"
  • type all characters you want to be used, including prosigns; for example: ABCDEFGHIJKLMNO PQRTSUVWXYZ0123 456789áéç.,_/?
  • under "Characters sequence", select "Chars from custom string"
  • the player will now create random words using the letters you have listed


73 de IZ2UUF
Davide
Quote
 
 
0 #27 Ricardo Fernandes 2013-05-09 17:28
:lol:
Hello friend!!!!!!!!!!
I'm amateur radio py4aaz Brazil.
Congratulations program.!!
Very good .. excellent!!!!
I'm using a lot.
You could add characters Brazilians?
such as:
á (DI DÁ DI DÁ)
é (DI DI DÁ DI DI)
ç (DÁ DI DÁ DI DI)
. (DI DÁ DI DÁ DI DÁ)
, (DÁ DÁ DI DI DÁ DÁ)
_ (DÁ DI DI DI DÁ)
/ (DÁ DI DI DÁ DI)
? (DI DI DÁ DÁ DI DI)

I'm relearning quick with your program.!!!!!!
Thank you!!!!!!!!!

Ricardo Fernandes

www.qrz.com/ py4aaz :lol:
Quote
 
 
0 #26 IZ2UUF 2013-05-03 11:11
Quoting Marcos:
Thanks for your effort.
I will try to learn morse with your program and g4fon.


Thank you for leaving a comment! Good luck with your CW training!

73 de IZ2UUF
Quote
 
 
0 #25 Marcos 2013-05-03 11:09
Thanks for your effort.
I will try to learn morse with your program and g4fon.
73
Quote
 
 
0 #24 IZ2UUF 2013-04-19 12:00
Quoting Ingemar Jonsson:

I have altough found one minor bug in your latest version.
When chosing fix length words the app "sends" one more character per word than the chosen word length.
Best regrads, Ingemar SA2ARS


Hello Ingemar.
Thank you very much for your appreciation and for your bug report. I just verified that you are absolutely right.
I put the bug in the buglist and it'll fix as soon as possible together with some other minor improvements.

Have a nice day
Davide - IZ2UUF
Quote
 
 
0 #23 Ingemar Jonsson 2013-04-19 11:55
I using Your app on my Sony-Ericsson Xperia X10 for my ambition to learn and master the Morse code.
And it's a very good complement to the PC applications that I use.
I have altough found one minor bug in your latest version.
When chosing fix length words the app "sends" one more character per word than the chosen word length.
Best regrads, Ingemar SA2ARS
Quote
 
 
0 #22 IZ2UUF 2013-02-20 08:39
Quoting Max, G7UOZ:
Hi There, thanks for releasing this app, could you also distribute it via the FOSS android site at f-droid.org if possible for those who can't use the Google play store. thanks and 73's :)


Thanks Max for your tip.
However, FOSS is an acronym for "Free Open Source Software". Although my software is free, it is not open source or - at least - not yet: I don't know whether it would be accepted on a FOSS repository.
People not having access to Google Play can download the .apk file from my site using the link at the end of this article.

73 de IZ2UUF
Quote
 
 
0 #21 Max, G7UOZ 2013-02-19 16:05
Hi There, thanks for releasing this app, could you also distribute it via the FOSS android site at f-droid.org if possible for those who can't use the Google play store. thanks and 73's :)
Quote
 
 
0 #20 IZ2UUF 2013-02-06 22:01
Quoting SI6E:
It would be nice to have an automatic error check built in. That is, instead of the app displaying the characters played, the user will input them on the device as they are played. After the session is over, the app will calculate the percentage of correct characters. There is an app for iphone which does this and I've found it very useful.


Thanks Daniel, this feature is already in the to-do list waiting for me to have some spare time to work on it! :-)
Thanks again for you comment.

73 de IZ2UUF
Quote
 
 
0 #19 SI6E 2013-02-05 14:13
It would be nice to have an automatic error check built in. That is, instead of the app displaying the characters played, the user will input them on the device as they are played. After the session is over, the app will calculate the percentage of correct characters. There is an app for iphone which does this and I've found it very useful.
Quote
 

Add comment


Security code
Refresh