YAMA Help

Whether you are looking for routine practice, seeking head-copy tools, wanting to test your copying limits against simulated audio impairments, or working on your CW sending skills, YAMA is built to help you.

YAMA features standard input processing, such as: discarding non-Morseable characters, space compression, and case-agnostic input, as well as non-traditional features: selectable ProSign support, selected character filtering, expansion of contractions (e.g., won't to will not), European & Esperanto support, graduating speed, dynamic wave shaping for QRQ, and more. Changes to speed/tone and audio impairments can be made during play. Many operational modes and options can be used in combination, and almost all of them are compatible with the Echo sending feature as well.

YAMA uses a Terminal User Interface (TUI), with some mouse support. Navigation to screens (menus) is performed using key combinations mostly the Control Key plus a letter, though a few Function keys are supported as alternatives. Within screens you have the option to select fields to edit with the mouse, or by TABBING through fields; similarly you can TAB to buttons and hit Enter or mouse click, or Ctrl-S for the SAVE key. Help is available via the standard F1 function key. Note: In the menu screens (Timing, Options, and Audio), using back-tab is often quicker to navigate to a field of interest than pressing tab multiple times forward.

High-Level Overview - Please read.
Your introduction to the app will be greatly enhanced by reviewing the environment briefly before diving into the specific sections below. As the main screen (Input/Output Text) indicates with its prompt, the app is ready to create CW using a number of default options. Type "Hello World" and press Ctrl-P. You will hear 20wpm CW as long as the PC volume is on and you resisted making changes.

Across the top of the screen is a menu bar with names, left to right: F[white::b]ile, P[white::b]lay ... etc. (access and navigation follow below). Some of the menu items cause immediate action (Play, Quit, About...), some collect a few choices and then cause immediate action (File, Wave, Audio...), and three (Options, Echo, Timing) collect input to control the major functional modes of the app (WordBuilder, TextBuilder, FlashCard, Echo, all explained in the tables below). The most significant is the Options screen. This screen serves two functions: First, it enables or activates the modes just listed (indicated by blue-labeled checkboxes on the screen). Second, it collects a long list of options (at the bottom) that impact various modes and the general user experience. All inputs from these screens are permanently saved in a file. 

I've used a lot of words and will elaborate further, but I think you will quickly find it intuitive. Let me clarify two things: First, if your selections are invalid or conflict with another option, a pop-up will warn you and you must correct the problem to save. Second, the Echo mode (for sending practice) is enabled on the Options screen, but its keying behavior is configured on the Echo screen.
A lot more will be said about Echo.

Getting Started: Entering Text
Before YAMA can play anything, it needs text. You have two easy ways to do this:
1. Type or Paste: Simply click into the main Text Input box and type or paste your practice text directly. Cursor keys, Backspace, Delete/Insert, Page Up/Down, and Home/End are supported for editing.
2. File Load: Press Ctrl-F (note: Ctrl-F means hold the Control Key and simultaneously press the 'f' key) to open the File Selector and browse for any standard '.txt' file on your PC (e.g., word list, email, a novel). There are no canned or generated input materials.

Once text is on the Text Input/Output screen, you can increase or decrease the amount of text using the NumWords option Ctrl-N, instead of requiring an external editor.

Dynamic Menus & Navigation
YAMA is operated via keyboard shortcuts and in some case mouse clicks. Keep an eye on the top menu bar, as it is dynamic. YAMA will only show you the shortcuts that make sense for the current context. For example, you cannot open the Options menu while audio is actively playing; therefore, there will not be an Options label and Ctrl-O will be ignored. Similarly, the Wave export label will only appear when you actually have text loaded to export.

The method to enter or change an option depends on the option type (similar to a GUI app). First, navigate to the option of interest using TAB or BACKTAB. If the option is a single-character field (like "Use..." or "Random Order"), simply hit Enter or Space to toggle it, then TAB forward. If the option shows a single digit or the name of a timing method (e.g., Farnsworth), the choices are provided in a drop-down menu; use the cursor keys and hit Enter. For multi-digit options like tones or speeds, use Backspace, type the new value, and hit Enter or TAB. For input text boxes (such as start/end messages or skip characters), use Backspace, enter a value, and hit Enter or TAB. 
You can always exit a menu without saving by pressing ESC to safely close and return to the prior screen. You can also press Ctrl-S to SAVE instantly without navigating to the Save button.

(Note: insertion or removal of headphones can trigger a Windows hang of the YAMA app requiring an app restart. This is a common Windows issue, not YAMA's.)

The following keys display sub menus or perform significant actions.

Key            |  Menu Name  | Purpose
---------------|-------------|----------------------------------------------------------------------------------------
Ctrl-A         | About       | App info and License.
Ctrl-D         | DataStats   | Statistics and IWR counts. New input clears old data. During Echo the screen grades
               |             | your timing for dits, dahs, and spaces based on the Tolerance factor you have set.
Ctrl-E         | Echo        | Options for sending practice. (see Echo table)
Ctrl-F, F3     | File        | Open a .txt file for playback.
F4             | (No Menu)   | Turns on a standalone Practice Oscillator.
               |             | ESC exits. (More below)
Ctrl-I         | Impairments | Audio impacting impairments (QRN, QSB, Drift, etc.)
Ctrl-L         | cLear       | Clear the current text input (aka screen clear).
Ctrl-M         | (No Menu)   | This is a Hot-key; use anytime to Mute input sent by YAMA.
               |             | For copy practice features, YAMA continues to consume input 
               |             | but silently. In Echo, the input you are to echo back    
               |             | is written to the screen instantly and silently. It is an   
               |             | On/Off toggle; its state is on the Blue Line.
Ctrl-N         | NumWords    | Iteratively copies or truncates the current text.
Ctrl-O         | Options     | Parser, messaging, and text processing options.
Ctrl-P         | Play/Pause  | Start or pause the current loaded input text.
Ctrl-Q         | Quit        | Exit YAMA. (Or close the parent window.)
Ctrl-S         | Stop        | Halt playback immediately (cannot be resumed).
Ctrl-T         | Timing      | Speed, Tone, and IWR settings.
Ctrl-W         | Wave        | Export current text to .wav file(s).
ESC            | Close       | Cancel/Close menus without saving.
Spacebar       | Hide/Unhide | Toggle text visibility during audio playback.

Supported Characters & Punctuation
YAMA naturally supports standard letters A-Z and numbers 0-9.

Basic punctuation: . , ? /
Extended punctuation (Enable in Options): : ; " @ ' ( ) $ ! \ 

ProSigns & Equivalents
Supported ProSigns: <AR> <AS> <BT> <KA> <SK> <VA> <VE> <SN> <BK> <HH> <DU> <SOS> <CH>.

If "ProSign Support" is disabled in Options (Ctrl-O), bracketed ProSigns will be ignored (including their use in the Start/End Message). However, the standard keyboard equivalents + (<AR>), = (<BT>), and - (<DU>) will still play, unless the shortcuts are added to the Skip List in the Options screen. (Note: any other use of the '<' or '>' character within YAMA is ignored.)

Options Screen (Ctrl-O) - Settings
Note: On MAC, and possibly some terminal apps, the Options screen values may not all be visible on screen. If you don't see buttons at the bottom of the page use the TABS to access those fields.

Setting               | Description
----------------------|----------------------------------------------------------------------------------------------
Word Builder Mode     | Plays words progressively (e.g., T, TH, THE) for building head buffer comprehension. 
                      | Mutually exclusive with IWR. IWR speed is used to sound the last word.
Word Separator        | If populated, one character or ProSign in this field separates output.
                      | e.g., A AM AM I IT IT could play as: A AM AM <BT> I IT IT ? if <BT> and ? were in the Word 
                      | Separator field. If IWR is enabled, one more full word is played at IWR speed.
Sort                  | With Text or Word Builder, sorts input words in short-to-long order.
Text Builder          | Plays input words progressively (e.g., 11 22 33 44 plays as: 11 11 22 11 22 33 11 22 33 44).
                      | Mutually exclusive with Word Builder and Randomize Words.
Word Count            | Limits the count of words used by Text Builder (2-25).
Text Separator        | If populated, one character or ProSign in this field separates output iterations. 
                      | e.g., aa bb cc plays as: aa aa bb aa bb cc <BT>, if <BT> was in the Text Separator field.
Flashcard             | For live play except Word Builder, plays a word(s) at current speed and waits for the user to 
                      | recognize and hit Enter to get the next word. Backspace will replay the current word(s).
WordCount             | Number of words per flash (1-20, default 1).
Random Value          | Words per flash, range from 1 to WordCount value.
Echo Mode             | Enables echo-back sending feature. Uses external key device. Text is     
                      | played similarly to Flashcard Mode, then the user keys it back (see below).
Syllablize Words      | Play multi-syllable words by syllable instead of by letter. A head buffer feature similar to 
                      | Word Builder. Approx. 1,000 common words will be syllablized if not attached 
                      | to punctuation. E.g., "COMMON BUT DIFFICULT" plays as "COM MON BUT DIF FI CULT".
Random Word Order     | Shuffles the playback order of the entire document's words.
Randomize Word Chars  | Mutually exclusive with the IWR Mode; scrambles character order in a word.
ProSign Support       | Toggles support for bracketed ProSigns (e.g., <AR>). Does NOT affect -+=.
Extended Punctuation  | Toggles support for extended punctuation marks.
European Characters   | Toggles support for European & Esperanto Morse characters ( '\u00C4' '\u0108' etc.)
Use Skip Char List    | Enables the Skip List filtering during playback.
Skip List             | Define specific characters or ProSigns to silently ignore.
Char Repeat Limit     | Caps consecutive repeating characters to prevent runaway use of a character. Default 3.
StartUp Delay         | Adds a countdown timer (in seconds) before playback begins.
Use Start Message     | Toggles injecting a custom message at the beginning of the text.
Message Text          | Specific text to play at the start (e.g., VVV <KA>).
Use End Message       | Toggles injecting a custom message at the end of the text.
Message Text          | The specific text to play at the end (e.g., <AR>).

The Skip List & Contractions
You can define specific characters or ProSigns to silently skip during playback
(Options -> Skip List).
Important Apostrophe Rule: If you add the apostrophe (') to your skip list, YAMA will automatically expand 17 common English contractions before removing the remaining apostrophes (e.g., "DON'T" will becomes "DO NOT").

Note that the bottom of the screen has a yellow status line, and below that is a [blue::b]blue reminder line about your current values from the Timing screen. It may also show the phrase Input Modified. This indicates that at least one selection on the Options screen will modify the text input before it becomes audible CW, ensuring you are not surprised if the first sounded string differs from what is displayed.

Practice Oscillator Overview
This is a simple audio oscillator. It takes its tone from the Timing screen (Ctrl-T) - nothing else; it uses the Echo (Ctrl-E) Echo Port settings at the bottom of the screen - nothing else. Besides sharing the options stated above, the feature is independent of all other features and options.

Use it to troubleshooting or confirming your comport wiring, the Echo Port settings, the tone and volume of your audio. Or naturally for manual keying warm up before Echo or teaching CW. This will not support a keyer or bug becasue there is concept or timing, decoding, grading.

Echo Overview

This feature is unique within YAMA. It is the only feature that enhances sending (though it can provide copy practice when combined with other modes), requires an external keying device (no mouse or keyboard) and its associated hardware setup, and is fully interactive between the app and the user. 

Echo is designed to actively build and improve your sending skills by having you echo back perfectly timed Morse code generated by YAMA. To align with head word buffering and Instant Word Recognition (IWR) training (NOT YAMA's IWR feature), the interaction is based on groups of one or more words, not individual characters (e.g., <word1><wordspace><word2>). Of course, you can have a group as short as one character, and a word count per group as low as one as wellΓÇöthis provides rapid two-way interaction between the app and your keying.

The length of these groups is unrestricted and depends entirely on your chosen input stream; it could be "E", "RST", "555-1212", or "MISSISSIPPI". Note that selections on the Options screen (Ctrl-O), such as Use Prosigns or Extended Punctuation, act as filters to automatically allow or delete specific characters from your input stream.

To begin, enable Echo in Options (Ctrl-O) and start the session with Play (Ctrl-P). The timing method is limited to the Standard and Wordsworth options (more on how Wordsworth functions in Echo). (The IWR feature, if enabled on the Timing screen, is ignored during Echo).
- Listen & Echo: YAMA plays the audio (with an optional sidetone available in the Ctrl-T Timing menu), and you echo it back.
- Success: If your input matches exactly, YAMA automatically advances to the next group.
- Mismatch: YAMA pauses. Press Backspace to retry the group, or Enter to skip and advance.
- Live Controls: Press Spacebar at any time to hide or unhide the main YAMA screen, and Ctrl-D to toggle the DataStats overlay. The DataStats is not updated until the group is finished so as not to be distracting. The grading of your keying is by elements: dits, dahs, intra-element space, etc. The screen shows the current (or just completed) group on the left, the summary of the session on the right, and a comparison to the standard timing based on the selected character wpm that you are trying to emulate. Note that your grading is based on the Tolerance setting you have configured. 

Timing & The Keying Window
Understanding the timeline of a Echo group is critical for a smooth UX. The sequence flows linearly:
1. YAMA Plays: The application sends the group at your configured speed.
2. Word Space & Alert: YAMA waits one standard word space, then plays a short alert tone (if configured) to signal your turn.
3. Hesitation Window: You have a generous 2-second window to mentally process the word and strike the paddle for your first element. 
4. Keying Window: The moment you close the paddle, the hesitation timer stops, and your performance clock begins.
5. Element Accuracy: Individual elements you key (dits, dahs, and internal spaces) must meet a settable accuracy tolerance to be decoded correctly. 
6. Padding & Evaluation: You must complete the entire group within the exact time YAMA took to send it, plus your chosen Key Padding (Strict, Normal, Relaxed, or Forgiving). When YAMA detects silence equal to 3 standard word spaces, it closes the window and grades your input.

Tip for progression: As your keying practice improves, you can force yourself to match YAMA more strictly by reducing
the element Tolerance, lowering the Key Padding, and increasing the number of words in a group, all set on the 
Echo screen. It may be humbling, or at least frustrating, if you start too aggressively. Since this is a 
PC app, not a dedicated microprocessor, it might be impossible to get down to a 5% tolerance (feedback welcome).

Hardware Requirements & Setup
Echo requires an RS-232 COM port adapter. The physical wiring is radically simple: it requires exactly two wires. No jumpers, no common grounds, and no resistors are needed. You simply wire your CW key to bridge one output pin to one input pin, making a series loop from the DB9 source pin through your key device and back to the monitor pin.

DB9 Adapter Connection:
- Outputs (Power Sources): Pin 4 (DTR) or Pin 7 (RTS)
- Inputs (Listeners): Pin 8 (CTS), Pin 6 (DSR), Pin 1 (CD), or Pin 9 (RI)
Match the two wires on the adapter to the "Key Line Interface" setting on the Echo page.
The Default CTS-DTR is most commonly used.
(Pin numbers are listed on the Echo options page. Viewed from the back (solder) side of a DB9, with the wide edge on top, the top row from LEFT to RIGHT is 1 2 3 4 5; the lower row is 6 7 8 9.) Match your wires to the option setting.
A simpler alternative is to buy a DB9 adapter with a built-in terminal block to screw down the wires; they cost about $5. 

Echo Quick Test
1. Ctrl-T Timing screen: set a Character Speed and Tone. Then SAVE.
2. Ctrl-E Echo screen: set sidetone, set alert, and set KeyLineMode for the wiring/pins you soldered on your
DB9. Set Polarity to standard, uncheck Parasitic Power. SAVE.
3. Ctrl-O Options: Check Echo. SAVE.
4. On Text Input (main screen), type a few words. 
5. Of course, insert your COM port with the key device connected.
6. Ctrl-P to start Play. YAMA should sound and display an input word(s); when it stops the lower left side of
the screen should have a green "Key now" as well as a cursor on the Text Input/Output area, and you should have heard a brief alert tone. Quickly, attempt to key back to YAMA.

If you heard some CW before you got a TIMED OUT message, you have verified the minimum setup.
If you heard a long DAH not in sync with your sending, then the Polarity option on the Echo
screen needs to be changed. If the status line says NO INPUT, you didn't key anything or there's a connectivity issue.
The default COM PORT is 3. Your PC may have others; see the drop-down choices.
Depending on when you insert the COM PORT, it's possible the Echo Port may show none; try the button at the bottom labeled
Refresh Ports.

Echo Screen (Ctrl-E) - Settings
Setting                | Description
-----------------------|---------------------------------------------------------------------------------------------
Tolerance (%)          | % a symbol element (dit, dah, space, etc.) can vary from the expected value.
Echo Word Count (1-20) | Number of words played (default 1) and to key/echo back in each group.
Random Word Count      | Allows count from 1 to Echo Word Count.
Key Now Alert Tone     | Plays a short audible prompt (~.5 dit) for you to begin keying. There is also a Status Line 
                       | prompt "Key now..." as well as a brief cursor below the words from YAMA. Do NOT key before 
                       | the prompt - the decoder will not be active, nor will the sidetone.
Alert Tone Frequency   | Allows the alert tone to differ from audible code.
Error Tone             | Plays Alert Tone Freq for about 0.5 Dah time on a keying error.
Key Padding            | Once you start to key, you have the same amount of time that YAMA took to send you the 
                       | word(s), plus 4 levels of padding given as descriptive names.
SideTone               | Use the PC sidetone for keying using the same tone as set on the Timing screen.
Visual Feedback        | If set, your keyed symbols line up below what YAMA sent. Two identical lines indicate
                       | perfect match; * indicates invalid Morse (i.e., 7 dits) (more on this later).
Perfect Match Message  | Brief pause on match, with a green status message. Helpful is Visual Feedback is off.
Echo Port              | A COM port to connect your device (straight key, keyer, bug).
Key Line Interface     | Which leads in the COM port are being used.
Key Line Polarity      | Whether key up is silent (standard) or plays a tone (down is inverted).
Parasitic Power        | If needed by the COM port cable (e.g., if the cable uses opto-isolators).

Timing Screen (Ctrl-T) - Timing
Setting                | Description
-----------------------|---------------------------------------------------------------------------------------------
Timing Method          | Standard, Farnsworth, or Wordsworth. Choice controls if/when the next few options apply.
Character Speed        | Applies to all of the above methods.      
End Ramp Speed         | If set, must be greater than the above. Will have an audio session increase in speed 
                       | linearly during the session. Speed will not change with a word.
Effective Speed        | A speed lower than Char Speed, used for Farnsworth or Wordsworth spacing.
Tone                   | For YAMA-played audio; for optional sidetone in the Echo Mode.
Use IWR Mode           | An on/off feature toggle, placed here since it relates to Character speed (if the played 
                       | audio sounds your chosen IWR words at a faster rate than other words). 
Speed                  | The character speed for IWR matched words.
Tone                   | Likely best set the same as the previous tone.

Impairments Screen (Ctrl-I) - Audio-impacting impairments
Setting                | Description
-----------------------|-------------------------------------------------------------------------
Static (QRN)           | Injects constant background hiss and random lightning crashes.
Fading (QSB)           | Simulates a slow ionospheric roll, dipping and recovering volume.
Tone Drift             | Simulates an unstable oscillator, bending the pitch up and down.
Speed Drift            | Simulates a tired operator by slowly expanding/contracting the timing.
Key Clicks             | Injects a harsh electrical spark at the start and end of elements.
Brown Noise            | Not an impairment. Can increase mental focus by masking other noise.
Pink Noise             | Not an impairment. Can increase learning (some clinical evidence).

Note that you can make changes to the currently playing audio via the Timing or Audio screens.
Note: the two noise tones are hypothetical, not specific to Morse code.

WAV File Export (Ctrl-W)
YAMA exports 16-bit Mono audio. The wave screen lets you select a target directory for the created wave files; if the path does not exist, it will create it. The approximate play time for the chosen speed and the corresponding size are shown. You can also specify (actually limit) the number of files. If your input is a large novel, you can certainly limit the output to a handful of practice files. If you are emailing the completed files to yourself so that you can play them on a cell phone, capping the file size near 10MB should be reasonable.

IWR - Instant Word Recognition Feature
This is a head-copy related feature. It matches words (actually any space-separated string of supported characters, e.g., the qsl 73 cul) in the input text, override the chosen timing mode (Standard, Farnsworth, Wordsworth and the associated speed/tone), and plays the matched word (from the yamaIWR.txt file) at an increased speed with standard timing. To do this, you must create a yamaIWR.txt file. A sample file has been created in your OS's standard configuration file directory ($HOME\AppData\Roaming\YAMA for Windows). The file will be editable (cursor keys, home/end, pg up/down, backspace, delete/insert) from the Timing screen (Ctrl-T), or you may create a local one in the same directory that YAMA is launched from. This one will take priority, but you will have to edit it with Notepad, vi, emacs, or whatever your favorite text editor is (not a word processor, unless it has a save as txt option). The file should list one word per line (any case, any order); a '#' at the start of a line tells YAMA to ignore that line. If you choose to also match the word if it's immediately followed by , . ? :  as well as the bare word, this is indicated by a trailing asterisk (e.g., qsl* matches: qsl qsl? qsl. qsl: qsl, Note this is the only supported use of the asterisk in the app). The IWR feature as described is ignored if you have chosen either Word Builder, Randomize Word, or Echo in the Options menu since you would never get a match (or make sense in Echo). A small purposeful interaction with IWR speed is as follows: if you chose Word Builder and have IWR enabled, when Word Builder has completed constructing the word (as in: t te tes test) you will have one more sounding of the final word, but now at IWR speed.

Let's use a more concrete example.  Setting: standard timing method, characters at 20 wpm, and IWR Mode unchecked.

Now with "THE QUICK BROWN FOX JUMPED OVER THE LAZY DOGS BACK" loaded into the Text Input/Output screen, hitting Ctrl-P will PLAY that sentance at 20wpm, standard timing. Now on the Timing screen, check the IWR Mode checkbox, and set the IWR speed to 25 wpm, use the Edit IWR button to open the yamaIWR.txt file, cursor down to a blank line and enter the following 3 words, one per line: THE AND FOX, then SAVE and SAVE on the Timing screen. Now use PLAY and hear the difference. The words shown in yellow will be played at the 20 wpm Character Speed. The words in red match the IWR words so they are played at the IWR speed.

THE QUICK BROWN FOX JUMPED OVER THE LAZY DOGS BACK

With a much larger input, and/or multiple practice sessions, the word THE would be more comfortable as a complete new sound at a higher speed, FOX while short and unique would not likely be found very often so not a good candidate, AND had no matches in this small test sample, but it was included to demonstate that an unmatched word is no problem, and it certainly would be matched in other practice. After this practice, the DataStats (Ctrl-D) would show you the counts for all the matches. Why do this? Nobody send like this; thats correct but its a mechanism to start building up a "dictionary" of familar sounds at a much higher speed then your normal practice, just as most hams can recognize CQ, or maybe RST 5NN at a much faster rate.


Note: Using the high end of the 2K Tone limit may impact the audio profile for QRQ speeds; let your ears guide your choice, rather than letting the app limit you.

Experiment and you will quickly understand the capabilities. 

You can see the app is not for complete beginners, nor does it attempt to compete with many excellent training apps such as Precision CW Tutor & Fistcheck, G4FON, LCWO.net, LICW.org, etc., but rather bundles a number of practice features in a single app.

You can email me at [email protected] if you find something that needs clarification, a bug, a typo, or if a numerical limit causes you an issue. The sound library will not work on MAC, so that's not a consideration; a mouse will never be supported by the UI library, so that is not a consideration.

73 and best of luck on your CW journey.
WA2NFN