Note: this tool replaces the eariler MCPT, eliminating ties to specific training apps, fixed character learning order and many other simplifications. The tool's executable file will be called "text4morse.exe" in Windows, on Linux without the ".exe".
Text4morse, generate customized practice content for listening to Morse Code with your favorite tutor/trainer software. Words, code groups, prosigns, or combinations of all of them. Random or selected. You choose the, word or group lengths, characters used, amount of practice material to generate.
The learning order of characters is now user controlled, if desired. The default order is KOCH like as follows: "KMURESNAPTLWI.JZ=FOY,VG5/Q92H38B?47C1D60X". If you want to use a different order. add/skip certain characters, then an alternate file based method is available.
The file must be in the current directory, must be named lessonChars.txt. Characters should be entered one per line, to simplify associating a lesson number to a character. Supported ProSigns can be included. In this form. it's easy to refer to characters because their line number is now the value of the lesson option, E.g., lesson=3:3 is M, while lesson=3 gives from the start through the 3rd character or: K<AS>M
Below is the file format. K <AS> M ULater in the document we will detail using the option <lesson>, to see how characters are selected.Overview
This file contains examples of the usage of all options.
Text4more overcomes some of the common issues with practice text for other sources, or its generation:
- limits typing or edits to create text
- flexible input
- better distribution of random data
- user control of input matching criteria
- random output to eliminate memorization
Overview Of Behaviors
The tool has several behaviors of operation. One or two key options will determine the behavior during execution. All behaviors are demonstrated in the examples, as well as many supporting options. The following is a simple list of a behavior and the key option that enables it.
- code groups: -codeGroups (typical random strings: UUMRK MU.4R)
- permute: -permute (2-3 character code group giving every possible permutation: KMU, MUK, UKM)
- words: -text (words from a file: NAME RIG QSO WX)
- call signs: -callSigns (generated from known characters: W1KMU K2MM WA4QWE/QRP)
- mixed words and code groups: -mixedMode (HELLO RIG KMU?3R BYE NAME 4RED=)
- general strings: -in (read from file: HELLO RIG 98.6 80KHZ KA2ABC <SK>/ QRS?)
- sending: -send
Options: format, evaluation, use of <optFile> for file vs. cmd line input.
There are many options to customize your practice text, but in any execution you may only use a few. Options can be read from a file (see -optFile) or the command line. These options, override defaults. The options in the file, will be overridden, if the same option appears on the command line. So if you use both -opt and command line opts you will most likely want -optFile to be the left most option. When you run MPT, if you see a full screen list of options, check the first line for the problem cause. Also, adding -help=options to a command line with you have used will show you the current state of ALL options, the ones you have set, plus those with defaults. The defaults may have impact on your output that you didn't realize.Note: Zeros written to the screen have a slash for readability, they are printed unslashed with <-outFile> option so tutor/trainer software does not have problems. Option <-zero>, will make displayed zeros as '0'.
A simplified method of using a file of options, just as -optFile, is to ONLY give the file name following the tool's name, i.e., text4morse file.txt. this is quicker for instructors during live training, however it does not let option values be overridden, or a file be created as the -optFile allows.
Notation
To minimze typing, some option name are a concatentation or abbreviated words, for example: preLen for prefix length; cgList for code group list.
The following options all have a minimum and maximum value, values are given in one option. They are: sufLen, cgLen, inLen, lesson, and DM. (DM is a quantity not a length). E.g. -inLen=5, is a shorthand for -inLen=5:5, which means the minimum and maximum value for this option is 5. A value such as 3:6, is a random value between 3 and 6, inclusive.
The help usage will remind you about these options, you will see the default value written with the colon notation.
If you specify the option optFileon the command line with other options, and that option file does not exist, the tool will offer to CREATE it for you. This is a simple way for a user to build up a command line, test it, and then preserve that behavior for future use.
A few more notes on option format:
List options can use a shorthand range entry notation. For example, "A-DZ0-4" instead of the spelled out form like "ABCDZ01234" (the order of the range is as shown, 4-0 would fail).
- a "-" MUST precede the option name (no spaces)
- list options may contain supported ProSigns whith format like <AS>
- option names MUST be in the case shown
- after the name, if there is a value put an "=" immediately follow by the value
- values have 3 possible types as listed in the options table below
- int (integer) are digits, and always >= 0, like: -inLen=8
- bool (boolean) turn an option on/off, values are: true for on, false for off
- string options should have values within double quotes, must be quoted if it has a space or "="
- inlist values are case sensitive since its used to match input text
- if inlist contains a "?", then a "?" following a word such as: cpy?, qrl? will be matched
- option values in: ist, sufList, cgList, delimiter are not case sensitive
To increase the occurance of a character, you can increase its presence in the list option. For example, if you want code groups to favor X and Z, you could make cgList="A-ZXXXZZZ", the odds of an A is 1/32, but X and Z is 4/32.
An alternative to the above, option <favorLast> will increase the likelyhood of the LAST 2 characters, in option <cgList>, this includes the use of cgList when you use the lesson options.
An example options file, with comments, follows.
# this is a comment line // as is this # a blank line as below, is OK too # this comment line is indented with whitespace # below are two formats for the "min" option # you can use either of these formats inLen=4 # comments can be at the end of lines inLen 4 # no equals NOT recommended -inLen=4 # preceded with minus, unnecessary # # to temporarily eliminate an option just comment it out as below # len=80 # #END A SPECIAL COMMENT, THIS ENDS THE PROCESSING OF THE OPTION FILE Lines below are ignored without the need to edit or comment them. Note: To comment out a block of lines, use the standard programming block comment rather than many uses of the "#" character. See below: /* num=100 len 80 */ # above the "/*" starts comments and "*/" ends the commentThe command line option displayFormat (with values LF, TAB,LF_TAB, TAB_LF in upper or lowercase), will change the whitespace in output for readability.
They are only for readability, if desired. They replace spaces in output with TABs, and LF adds a linefeed (or blank line) between output lines.
Additionally, there are several list type options: ist, sufList, cgList, inlist, and must.
On the command line or in the options file, these list options are treated as if they were just a collection of characters AFTER 2 parsing operations for the users convenience. So if you want code groups to contain any of a set of characters it would look like this: cgList="EIOTA27?". Each character is a standalone entity. Now for the two special situations. To save you typing, LETTERS (upper or lowercase) or DIGITS can be entered using range notation. In range notation, A-H, is the same as typing ABCDEFGH, the only two criteria is the first character must come in dictionary order (A-D is valid, D-A is invalid), and each range is independent (A-z invalid, A-Z good). Digits similarly go from 0-9.
Delimiter Option - what a delimiter is
This option <delimiter> is a special list option.This option contains one or more fields of strings, they are NOT individual characters. Delimiter="ABC" is one string of "ABC", NOT an "A" or "B" or "C". If the delimiter were used with a word input file: "this is a test", the output would possibly be "TEST ABC IS ABC THIS ABC A". Most likely, you want variety for better learning, so consider a delimiter with multiple fields like: delimiter="ABC|34|Z|?|,.". Now with the example above, the output might be: "IS 34 TEST ,. A ABC THIS". More useful delimiter now might be: "CQ|DE|QTH|RST|<SK>". NOTE lets look at those last two fields, this is the other way why a delimiter is different than the other lists.
If the field (data between the '|'s or a '|' and the double quote contains a range and other characters (letters, numbers, another range) then the range is simply expanded as seen already. So that last field is used as if you had typed "ABCDEF123"; and that entire sequence is what would apprear between words. HOWEVER if the field contained, ONLY a simple range, as in the next to last field above "|a-f|" this is expanded as if you wanted EACH character to be treated as if it were its own field. Said another way the field "|A-F|" is treated as if you typed "A|B|C|D|E|F".
Use of Delimiter - sample delimiter usage
The delimiter option, works in conjuction with 2 other options. Delimiter-multiples (entered as DM=x), where x is the number of fields in the delimiter that should be used (as a maximum) at any one time. Thus, with DM=1 and delimiter="A-D|1-3|?" this expands and is the same as 9 single character fields A|B|C|D|1|2|3|?, so in between each "word" you would get ONE of those characters. If DM=3, then you would get 1,2, or 3 of them concatenated together like: "THIS 3A TEST DD? is C A". The option delimiterRandom says even though we asked for delimiters between each word, that will be random (delimiterRandom means delimiter-random).While the fields of a delimiter can be a word or meaningful sequence like "QTH" or a ProSign like <AR>. Later in the document you will see that many features can be used in one execution to generate practice text to suit your current training needs. Using input words, code groups, delimiters, ProSigns and some random flags you could get very varied practice like: "THIS 38 TEST 78 IS 838 4F?,7J PRACTICE 321 GENERATED NW4,7D.,".
Options Help Information - getting runtime help for options
To list all options, run: text4morse -help. To get the CURRENT value of all option defaults, after they have been changed by on the command line or with the option file, you can add the option "-help=options" to the command line. .P If an invalid option is given, a complete list of options is displayed. Scroll to the first line for a hint to the problem, usually: a misspelling, missing "-", missing space before "-", illegal space after "-", unmatched ". .PGeneral Option Examples:
Examples will show the use of various options. In some case, highlighting is used to emphasize the new option from the previous example, or the main option for the given example. Remember almost all options have default values. Often they are not repeated in the command shown.As with any new tool or skill, you will learn best by trying and experimenting. Copy commands and try them yourself.
NOTE: in many examples, the command line has "..." this means are are other options that can or may need to be added, but the discussion is highlighing the other options.
Example 1: some options for "word" practice
HERE text4morse -inLen=3:6 -num=30 -inFile=words.txt USE LINE TEXT LINE WHICH TUTOR THAT TUTOR YOUR TRY YOU TRY TEXT MORSE YOU YOUR FOR WHICH MAY ARE NOT NOT MAY THAT USE CAN OFFER OFFERNOTE: 30 words between 3 and 6 characters from text.txt NOTE: words in random order NOTE: less than 30 unique words found, so we reuse some NOTE: string in <inFile> or <textFile> preceded by a "#" are skipped, so you can skip words from being used See example 32 for contrast of -in vs. -text.Example 3: options in a file instead of command line with <opt>
text4morse -optFile=myOptions Note: opt myOptions, will override default options. Command line options have the final say.Example 4: save practice material to a file, for your software tutor; and suffix/prefix options
text4morse -inFile=words.txt -inLen=5 -num=10 -sufLen=1:2 -outFile=out.txtWriting to file: out.txt NOTE: out.txt shown below YOU WHICH7 FOR= LINE1 TEXT/ MAY8 USE9 THAT5 CAN= NOTE: -sufLen=1:2, appends one or two random character from default sufList as a suffix. sufList defaults (see help). THAT/7 YOU04 LINE8 TEXT78 MPT. WHICH95 FOR20 CAN7? MAY= USE18Example 5: finer control of prefixes with <prLen>, <ist>
text4morse -inFile=words.txt -preList="123" -preLen=1 -sufList="QZX" -sufLen=1 -num=101MORSEz 1OFFERZ 2OFFERZ 1WHICHZ 3MORSEQ 2TUTORQ 1TUTORZ 2WHICHQ 2WHICHX 3OFFERQExample 6: finer control of suffixes with <sufLen>
text4morse -inFile=words.txt -num=10 -sufLen=1:3MORSE/, TUTOR245 MORSE1=7 WHICH?9 OFFER WHICH= 36/ OFFER9 OFFER=5/ TUTOR7 WHICH57Example 7: matching specific words in an input file
text4morse -inFile=words.txt -inlist="aeioufrm" -num=10 -inLen=8 (quoting of strings in lists, double or single is a good idea)OFFER ARE OFFER FOR USE USE ARE MORSE ARE ARE USE FOR OFFER OFFER MORSE MORSE USE FOR MORSE FOR NOTE: Use -inlist if you haven't learned the entire alphabet, or just want word practice on a limited set of characters. The output is limited to the inlist set (A-Za-z). NOTE: You can use a character range, like A-F, instead of ABCDEF - but it must be in ASCII table order (e.g. F-A will fail). "a-dhijx-z", "a-dD-G0-8" are good. NOTE: The set is NOT limited to letters, e.g. you could include an apostrophe to match "her's", but over doing this is going to start to look like code groups, if the input is not regular text. NOTE: Regardless of the value of inlist or lesson, a prosign found in the input file will be treated as a "word" as long as the option "min" is greater than 3 or 4 (depending on format ^XX or <XX> This <SK>, ^sk, for example are treated as a word. The two characters are NOT verified, so <ZZ> is a good as a real prosign for matching purposes, its up to your tutor software to treat it appropriately. If any list type option contains a "=" or " ", the value part MUST be quoted. E.g. ist=".,="Example 8: skipping over initial words from an input file
text4morse -inFile=words.txt -inLen=3:8 -num=30This command will find a lot of short words in a book for example. Like "I a to of in the an on etc."
Example 9: have matching words repeat in sequence
text4morse -inFile=words.txt -repeat=3Repeat whatever the output "word" is (including prefix and suffix), a number of times. Default is 1, the max is 5. Maybe helpful for head copy. Note: linking words in the input file with "~", treat the sequence as ONE word. E.g. my~name~is
AND AND AND THE THE THE SO SO SO The repeat option has a special twist. If used with the, AND the repeat count is preceeded by "R" (for random), AND the matching word has 3 or more letters - then the word will appear randomized, followed normally for the repeat count. For example: -textFile=word -repeat=R3 het the the the osueh house house house
Example 10: inserting specified ProSigns in place of words
text4morse -inFile=words.txt -inLen=3:5 -num=10 -sufLen=1 -prosignFile=prosignFile.txtYOU9 WHICH7 <BT>? FOR= MPT. <AR><AS>7 LINE1 <SOS>, TEXT/ MAY8 USE9 THAT5 CAN= NOTE: Each ProSign seen above is in the -prosignFile=prosignFile.txt. Prosigns are treated SIMILARLY to matched words, as follows: - they appear in upper case regarless of case in file - ProSigns are stored BEFORE the input file is read, therefore they contribute toward the "-num XX" quantity. That is, if the number of ProSigns is greater than num you won't get any words in output. - -en and -sufLen add to the ProSigns, just as if it were a word. The same is true for -random option. e.g. "8<HH>?" - A file entry can have one ProSigns per line (see file sample below). - File lines that do NOT match the ProSign format (<LetterLetter> or (^LetterLetter - this is for G4PON) are silently ignored. Sample ProSign File: # The above line is empty. or all spaces so its ignored. As is the next "random" text line. <AR> <SK> <AS> <bt> ^BT # this format supported to play output in G4FON # spaces before or after a ProSign sequence is OK <KN>Example 11: practical use of delimiters with word practice
text4morse -inFile=words.txt -inLen=3:5 -num=10 -delimiter='<BT> The option, "-delimiter", is a string of 1 or more characters (of any type) which will be displayed in between each output word (1 exception). For example, if the output WITHOUT this option were:the man and is so
With the delimiter of '<BT>', the output is:
THE <BT> MAN <BT> AND <BT> IS <BT> SO
You might use this option to get extra practice for characters that might not appear in significant amount using the randomness of "-en" or "-sufLen". The exception, noted above, is when used with the "-repeat" option. In this case, the delimiter appears AFTER the word repeating is done. as shown below. This is might be useful for doing head-copy, to separate the repeated words from the next group of repeated words. As below:
THE THE THE <BT> MAN MAN MAN <BT> AND AND AND <BT> Note: the "-delimiter" option is NOT effected by any other option (random, en, sufLen) ` Note: it is literal, and what ever you want. e.g. '.?/', 'XYZ', '123', 'It can even have multiple parts'. Note: You can have multiple delimiters, which are selected randomly, by separating them with a pipe "|" e.g. -delimiter="<BT>|<AR>SK<". for output like: "THE ? AND 4 MEN <SK> SAT . END" Also: If delimiter is used, then -delimiterNum=X, where X is the number of delimiters, format X:Y gives a min and max. DM=0 therefore means no delimiter, even though -delimiter might have a value. As in: delimiter="1|?|=" -delimiterNum=1:3 then the inter-word delimiters might be: 1,?,=,11,=1=,??. Note: If a field in the delimiter is only space(s) e.g. ".|?| |=", and DM=1, this will result in NO delimiter if the that field is selected. So output could be: word1 ? word2 = word3 word4. No delimiter between the last two words, your tutor will ignore the extra space. If DM was a range from min:max, then a random number between min and max will be the number of delimiter fields to concatenate together to make the value for output e.g. DM=1:4 could produce "=??", output therefore could be: word1 =?? word2. But if there is a space in the delimiter, you could get a multipart delimiter e.g. "=? ?", output could be: word1 =? ? word2. Note: If a field contains a prosign of either format, ^XX or <XX>, the filed cannot conatain anything else. Note: A delimiter is NOT counted as a "word" or codeGroup, so -num=4 for examplecould display "one xx two yy three xx four xx" even though the delimiter in some cases might look just like a word or codeGroup. Note: ONLY FOR LCWO USERS: if a delimiter field contains an asterisk (*), that will translate into a 1/2 second silence period during playback. This may be used with any feature where a delimiter applies, but may be most effective in conjuction with the <repeat> option.Example 12: use of <unique> when reading words from a file
text4morse -inFile=words.txt -inLen=1:3 -num=6 -unique The -unique option, terminates the adding to output as soon as a duplicate would be required to meet the quantity in the -num option.For example, if the output would have been: "HE SAW THE RAT HE RAT" because "he, rat" needed to be duplicated to meet the num=6 quantity. The -unique stops creating output making each word unique. Output is reduced to: "HE SAW THE RAT".
Example 13: controlling length and content of created code groups
text4morse -codeGroups -cgList="aeiokmr0-4?" -cgLen=6ie3?k 40kee ia?2? Note: case in cgList does not matter, output will be upper case Note: group length determined by and -cgLen Note: groups can be separated by delimiters as previously described Note: limited options apply when using code groups, others are silently ignored -num, -delimiter, -delimiterNum, -outFile, -inLen apply.Example 14: intermixing of code groups and words in the same practice session
text4morse -inLen=5:8 -inFile="in.txt" -mixedMode=2VISIT OTHER =,0-A0 ABOUT SHARE -=?A=-? MYSELF THOSE Note: Every "2" words printed from matching in the input file is followed by a random code group (from characters in cgList). Note: all options from word match word still apply if used (sufLen, delimiter, etc.) Note: In mixedMode, the code group word is NOT counted into the -num word count.`Example 15: permutations of characters from lesson 1-12
text4morse -lesson=12 -num=1 -permute=pThe output from this option "looks" like a simple set of short code groups, but its special. Code groups are random, therefore it is possible you might never see some characters next to each other. Likewise, you might do a lot of word practice, and never encounter certain combinations. Rather than wait until you encounter them on the air, maybe with call signs, this feature can help. The permute option, by default, will use the tutor and lesson options to determine which characters to permute. Note: 0 is the default lesson option. For the command line above, the characters to permute are: "KMU". The value "p", to permute means you want pairs, therefore the permutations would be: KK MM UU KM KU MU MK UK UM. Because this would be a very short practice session, there pairs will be repeated (in random order) until the value of the word option num, the default for num is 100. If you ONLY want the minimal set, simply use num=1. (Num will be ignored if it would cause a loss of a permutations, for the value of "p" or "t".) The num may limit permutations, but it will NOT create more the the valid number. Permutations grow quickly, so generally you'll use the option for limiting. (Remember -num=100 by default.) All the pairs are good, but in the practice of pairs, a character either follows a space, or has a space after it, so permute has another value form permute=t, which indicates you want "triples". Changing the command line above to -permute=t, gives the following: MKM UKU KMK UMU KUK MUM. We now have each character, where it is not next to a space. (Some permutations have been suppressed; there is no MMM, for example (3 M's doesn't give you anything that 2 didn't already), there is no MMK, KMM for the same reason. Lastly, you might want a practice session with both pairs and triples, use -permute=b (b for both). As the lesson number gets high, the output size get significant (some apps will simply truncate a file that's too big). For the case of "b" for both, this is NOT lower limit of output, the num option has total control of the qunantity of output. Most word practice and code groups will of course hit many of these permutations, if you want to work on a set of your choosing you can drop the lesson= option, and instead use the code groups list option. For example: text4morse -cgList="qrx5" -permute=b num=1 Generates: QRQ 5R5 5X Q5Q QXQ X5 R5R XQ 55 XR RXR 5X5 X5X XQX Q5 QQ RQR 5Q RX R5 XX QR RQ QX 5Q5 5R RR XRXYou can use the <prosign> option as well.Example 16: ProSigns used with code groups
text4morse -prosignFile=myPs.txt -codeGroups ....Prosigns were previous supported with an input file <in=my.txt>, but if used with options <codeGroups> or <mixedMode>, the Prosigns in the prosign file <prosign=myps.txt> with ONE prosign per line (see below), will use these 4 character sequences (e.g. <SK>) as if the were a single character in the <cgList> optin for code groups. File myPs.txt <SK> <HH> <AR> A code group of fixed size of 4 (cgLen=2:2)could look like: X3FQ JDUG J<SK>2S NEFS <HH><SK>z<A> Similarly if the command line ws using an input file for words but usig <mixedMode> for codeGroups, as well, the codeGroups could have prosigns.Example 17: reverse the spelling of input words
text4morse ... -inFile=myInput -ordered -reverse ...Note: This example will demonstrate a few more things than the reverse option.
The following line is the contents of words.txt.
This is the content of myInput file to demonstrating reverse option.
The following command, sets inLen=1 and inLen=15 so that no words will be discarded, Also, num was set to 11 so that no words are discarded and none are used more than once. ordered output stays in the same order as the input. len was set short, so that you can see that if a line is longer, but a word is straddling the length boundary, that that word is finished rather than having a word split.
text4morse -inLen=1:15 -num=11 -inFile=words.txt -ordered -outFile=myOut
The text below is the output now in file=words.txt. Note, that the first word was captured even though it started with an uppercase, that's because the default character matching characters is option inList is "A-Za-z".
` this is the content of myinput file to demonstrating
Note: I purposely have the option outFile two times, just to remind you that it is the right most option that overrides a prior value, just as command line options overrides the same option in the options file (if used), and that in turn overrides the built-in default. This may seem like over kill, but with so many options it does make for easy and limited typing to change the tools behavior for different practice text generation.
text4morse -inLen=1:15 -num=11 -inFile=words.txt -ordered -outFile=myOut -inFile=myNew -outFile=myFinal
THIS IS THE CONTENT OF MYINPUT FILE TO DEMONSTRATING REVERSE OPTION
Example 18: delimiters on a random basis
text4morse -inFile=words.txt -delimiterNum=1:2 -delimiter="1^A^?^<BT> -delimiterRandomAs previously discussed, DM=1:2, would give 1 or 2 delimiter strings concatenated between each word.
WORD 1 WORD A? WORD ≪BT> WORD AA WORD <BT> WORD ?
with -delimiterRandom (a.k.a. delimiterRandom=true) you indicate that delimiter printing is random
WORD WORD WORD <BT> WORD AA WORD WORD 1
Example 19: controlling the length of code groups when intermixed with words
text4morse -inLen=2:4 -cgLen=6:8 -mixedMode=3 -inFile=words.txtON AT OF 3,A??4 NO HE IS A4263?/ AND HAT FOUR ......
Example 20: randomness of the intermixed code groups with words
text4morse -inLen=2:4 -cgLen=6:8 -mixedMode=3 -inFile=words.txtThis input file for this example is a simple list of short words. The first line of output follows: ON AT OF 3,A??4 NO HE IS A4263?/ AND HAT FOUR ...... NOTE: In the above, after every 3 words (mixedMode=3) we get a code group. We can add an option -MMR (mixed mode random) which gives a 50/50 chance that a code group will be suppressed to lessen predictability. text4morse -inLen=2:4 -cgLen=6:8 -mixedMode=3 -inFile=words.txt-MMR NOTE: The stretch below with no code group due to -MMR. ON AT OF 3,A??4 NO HE IS 4263?/ AND HAT FOUR IN AND ON HAT HE OF ?.23D3 HE SO ..... Most users copy plain text faster than they can copy code groups, with this in mind you might want to have the copy above configured with on-the-fly speed changes so the plain text "words" could be sent at a higher speed than the code groups. To do this, we use two more options we've seen before; LCWO_low sets the low(slow) speed of the code group, and LCWO_step the incremental speed to add to LCWO_low to get the higher speed to use for the plain text.Example 21: using the optiono limit generated material to characters you have learned
text4morse ... -lesson=5Setting a lesson number, will populate cgList (for code groups) as well as inlist (for parsing and matching words in input file) In the command line given, cgList would now be "kmure", and inlist would be "kmureKMURE". This is the last option set, so it overrides any earlier setting of cgList and inlist, both option file and command line.
Range values are 1-40, setting 0 leaves inlist and cgList per their defaults, option file or command line which ever last last.
Example 22: an example of linking words in a word file to be treated as one word
text4morse -inFile=infileIf you use word input mode via option <inFile>, you can have a "word" as defined by the <inlist> characters grouped with one or more other words by use of the character "~", for example: MY~QTH~IS. This group will be treated as a new word (if each piece conforms to <inlist>l;<inLen> this enable you to get an ordered sequence where words are normally random. Note: a " ~" or "~ " word (e.g. ~MY, MY~, ~M~) will be ignored. Since this new group is treated as ONE word, other options will apply to the group, NOT the words that make it up. That is if you are using prefixes, suffixes, repeat, delimiters, this applies. The following is an example: THIS89 HAS23 SUFFIX22 THIS IS A GROUP99 TEST ?, WORD =. MORE ?? THIS IS A GROUP =? etc.Example 23: generation of some call sign formats
text4morse -callSigns ...The intent of this feature is to give the user the ability to get some call sign copy experience before learning all the characters, also to give some options that their tutor might not provide.
This is NOT a full fledged call sign trainer. The ITU has many exceptions to it's call sign format rules, as do the host countries. The call signs are "generated", in ITU general format, with some limitations. The ITU specifies a call as a PREFIX+NUMBER+SUFFIX. For prefix notation they use "P", so PPNS, means 2 prefix characters, a number (0-9) and one suffix character. Most hams would say W2AB is a 1x2, or 1-by-2 call vs. a PNSS.
MPT will generate prefixs of P,PP,PPP (not PPPP since its rarer), also for each "P" it will use ONLY alpha characters (the left most is never a "Q").
Similarly, for the suffix, MPT will generate S,SS,SSS not SSSS or SSSS, and again with alpha characters only.
The practice is for call sign "format", the actual generated prefixes may not be assigned to any country. For the same reason as above, a country code before the assigned call (e.g. DY/WB4ABC/QRP) are not generated.
text4morse -callSigns -lesson=23
SZ5R PN5LWT W5FAV GS5RZ K5WAW AK5UFR M5WO ME5J VT5RRM
*** some common trailing information that can be appended to the call: /p=portable, /m=mobile, *** /mm=maritime mobile, /qrp=low power station, as well as a fixed station at other than *** their normal location e.g. /4 for W2AA, as in W2AA/4.
text4morse -callSigns -lesson=27
H0QG VD5CS/1 M0DU/7 SG2PE/P MJ3ZM RT7N/M BZ2WF/QRP SU4ZAP Y4B W9I/MM
*** For head copy practice, repeat a call more than once and with NO lesson or *** tutor option, the full 40 characters (more precisely 26 alphas, 10 numbers, *** and slash) are used.
text4morse -callSigns -lesson=27 -repeat=2
IM0G/2 IM0G/2 ET3WPQ ET3WPQ P9GW/QRP P9GW/QRP IH5GZX IH5GZX IT8MC/M IT8MC/M
*** Lastly, you can still use the 2 options delimiter and DM, to get inter-call *** sign delimiters. This enables you to get NON call sign practice in the *** practice session. The example below is using a few prosigns and punctuation.
text4morse -callSigns -delimiter="<SK<>BT<^.^,^?" -delimiterNum=1:2
E6WJ <BT>, JZ8O <SK> D5KTI/3 <BT>lt;SK> UR3J/1 <SK> E1O/M ,<SK> JU5RFP/QRP
*** Note 1: lesson order is the line number in the chars.txt file
*** Note 2: You can customise your character use independent of the chars.txt file with the cgList option. I.e.:
text4morse -callSigns -cgList="123abcdef"
F2CFF B3F D1DCF EB2BC AB1DE FB3EBC DC4DAB CB2BFA ED4AAA
Limited call sign practice can be done without the "callSigns" option; in this case you control the prefix, number, and suffix portions using other options. Here is an example.
text4morse -preList="kw" -preLen=1 -codeGroups -cgList="0-49" -cgLen=1 -sufList="kt" -sufLen="2:3" Possible output: K2KT K9TTK W0KK W4TKT .... Note: lengths with just a number means that number is the mix and max, thus a fixed length; a length like 2:3 means a minimum of two and a maximum or 3. Also note the dash notation means the left character through the right inclusive; so 0-49 means 012349 just as a-d means abcd, they are just shorthand notations.Example 24: <displayFormat> for better readability of displayed output (usually for sending practice)
text4morse -displayFormat=TAB_LF ...This option cosmetically changes the output. It can take 4 different options, LF (add an extra linefeed), TAB (conver spaces to TABs), and to get both actions you can use either TAB_LF or LF_TAB.
These are for readability, if you are giving output to a tutor/trainer to play code as audio they have have no value. Some users use will use ouput for sending practice, and some have even used it for keyboarding practice. The following shows a small example or code groups, first without the new options, and then using both.
wsdf5 dw34e des,. sdsdw aswss sdj23 sdsdr ./766 36ffd fed34 dsdhh s43??
wsdf5 dw34e des,. sdsdw aswss sdj23 sdsdr ./766 36ffd fed34 dsdhh s43??
Example 25: <must> to ENSURE a given character is used in every output word/code group
text4morse -codeGroups -lesson=4 -must="ABCD" text4morse -codeGroups -cgList="MUKER" -must="ABCD"Either of the above generate code groups (assuming tutor=LCWO the default) with fixed length of 5 (default cgLen=5 or 5:5); but the new option <-must> means that every group is guaranteed to have one character from the
option. This gives a means of concentrated practice on one or a small set of characters rather than just being random. Note that the characters in <must> are not constrained by the lesson values. Note that must can also be used with <in> or <text> in a similar way to substitue one character from the must list.
MKURD KKBUR EUUAM
text4morse -codeGroups -lesson=4 cgLen=1:4 -must="E" In this example the user gets random length groups from 1 to 4, of the letters KMURE; but the the <must> forces every group to have an "E" since its the new character for the user, or the one causing problems.
KRE E MUER EE EMUE
If you want the "/" in <must> do not put it as the first character, some operating systems may have issue with that.
Example 26: <headCopy> make words progressively longer
text4morse -codeGroups -cgLen=2:6 -headCopy=1 text4morse -inFile=file.txt -inLen=2:6 -headCopy=1Note: headCopy may not be used with -text option.
The headCopy option will make each successive codeGroup have a length of one more than the previous, until the cgLen hits its maximum value. In the example above, without the new option, the group length would be between 2 and 6 characters. Now, the first group has a length of 2, then 3, then 4 ... until 6. This may help the user to build their ability to mentally buffer the text, a skill needed for head copy. If you use the delimiter option with headCopy, the delimiter will appear in between runs or elements NOT in between each word or code group. A delimiter is therefore an alert that the longest element is done, and the shortest one will follow; its also a handy way to get some practice of a prosign or puctuation. The difference is shown below.
NOTE: *** change the option from headCopy=1 to headCopy=2 with either option <in> or <text> and the output will take a word like "MORSE", and output "M MO MOR MORS MORSE". Use of the delimiter feature like "-delimiterNum=1 -delimiter=<BT&get;" will put a delimiter following the copy of the completed word.
Note: If <repeat=digit> is added, then the final word when spelling is completed, will be repeated. i.e. "c co cod code code code".
Without -headCopy: kmmu k ummkr km mm With -headCopy=1: km kur rruk kmmur rummkm mm umu kumu uuurr urumkm With a delimiter: mm mkm rmkm mmrkm <SK> um urk rmmk rumkk <AR>In the second command, the headCopy option does the same thing for words as it did for code groups.
Example 27: <send> creating special code groups for learning to SEND.
text4morse -send=12
text4morse -send=1,2 -cgLen=2:6 comma is ignored, just to show its 1 & 2 not 12
text4morse -send=4 -cgLen=2:4After learning to receive all the characters, this option can generate some groups for sending practice, particularly for keyers/bugs with dit/dah alternations.
The following groups numbered from 0-9 determine the characters. The order is from simplist to more difficult (more or less). 0: Special case see the note at the end of the example. 1: EIHMOST50 # all dits or dahs 2: ABDGJNUVWZ # one dit/dah or dah/dit alternation 3: 12346789 # as above (2 and 3 same difficulty) 4: FKLRPQXY # two dit/dah or dah/dit alternations 5: C.,?/ # three alternations or longer character 6: TAUV456BDN # "cut numbers" in order 0-9 7: <AR><AS><HH><KA><BT><SK> # ProSigns 8: :;'" # a few less common punctuation 9: ()[]@ # a few less common punctuation The third command above, might generate: FFY RR QYYY XK XF LY QKP RPRY text4morse -send=1,4 -num=200 -displayFormat=LF (Adding the option displayFormat=LF, for readability, generates: ) F5ØHE OSEMP OIPMM RMEFH RIYTO R5XQI THOXF THFRØ LXLRO SØIØK LXEY5 XML5F 5IRØK RKØQI TFEKP I5PFP TQFFH IPYEX TQTTY EKMFO ØKOIL Note: If taking on an all the characters of a group at one time is too difficult, you can limit the set to those you specify. For example: -send=1 "AN" will add "A" and "N" to the characters of group 1. You only need the "0" if send does not include any other groups, e.g. -send=0 "ABC" will ONLY use those three characters. Note: If you use your own character string as described above, it MUST be the the RIGHT most entry on the command line. Your character string can include supported ProSigns in the <> format.Example 28: <review> structured review of learned characters
text4morse -review -lesson=5
text4morse -review -lesson=3:5
text4morse -review -cgList="KMUR"Use characters, by lesson order or the cgList, and create a review before learning a new character. Options, -delimiter and -outFile MAY be used as described below. The format is as follows for each character in sequence:2 groups of 5 of the current character 8 groups of the current character 10 groups of the current character AND the last character 10 groups of ALL reviewed characters so far This repeats for each character, HOWEVER for every 5 new characters, there is a review of ALL characters with 30 groups of ALL the characters(the group size increases by 5 with 5 new characters). Note: The sample below is formatted, but your code tutor will simply use a SPACE where ever there is a RETURN. In the below you can see where the first 2 fields of delimiter were used; field 1 (<SK>) alerts you to the start of a new character AND for the summary block for every 5 characters. The second field <AR> (if it exists) is used to mark the end of sub sections. Do not use a delimiter which is also a character you are practicing or it will be confusing. text4morse -review -lesson=2:4 -outFile=lesson2_4.txt (output abbreviated) MMMMM MMMMM MMMM MM MM MMMM MM MMMMM MMMMM MM UUUUU UUUUU UUU UUUUU UU UUUUU UUUUU UUU UUU UUU UMUMMU MMUMMM MMMMMUM MMMUUM UUMMUU MUUMUU MUMUMUUU UUUMMUUUU MUMUUM MMMM UMUU MMMU UMUM MUUM MUU UUU MUMU MUUU MMMMM MMMU MUMMU MMUMU MUMM MMUMM MUM UMUU UMUM MUU UUMUU UUMM RRRRR RRRRR text4morse -review -lesson=2:4 -outFile=lesson2_4.txt -delimiter="<SK>|<AR>" (output abbreviated) Note: placement of delimiters vs. above <SK> MMMMM MMMMM <AR> MMMM MMMMM MMM MMMMM MMMM MMM MMM MM <AR> <SK> UUUUU UUUUU <AR> UUU UU UUU UUUUU UUUU UU UU UU <AR> UMMMMMM UUUUMU UUUMMM MMUMUM MMUMM UUUUUMUM MMMUUUM MUUUUM UUMMUM MUUMMUM <AR> MUMMUM UUMMM MUU MUMMM MMMMUM UMU MMUU UUM UUM UUU UUMUU MUUUM UUMU MMMM MUMU MUUUM MUM UUUMUU UMMUM MUMM <AR> <SK> RRRRR RRRRR <AR> Note: Below is a sample of what is seen AFTER 5 characters (see the doubled first delimiter). <SK><SK> SUU RSESRMS UESE MMESM USEMUMUM URUEM RUSUSU REEM MUERRRS SUEMMUM RSRRRU MSEUUM EMRS MMRES MSMMMR EERER EMRRUERU URS EUS SMUE UESSU MRUUR RSR SMMMUS SMRMSRSE EMESE SUURE EMMU EUSMRS ESSU <AR> A large lesson count may generate more material than your browser/tutor can handle, manually break the output into several files; or you can run text4morse several times to cover the lesson range (i.e. lesson=1:10,lesson=11:20 etc.).
This option is only for code groups. It will increase the likelihood of "confused characters". Some learners confuse characters that are mirror images of each other i.e. "F" and "L", some confuse compliments of each other, i.e. "R" and "K". This option will take the random code group generated, and if the lesson number (or cgList) includes BOTH of the confused pair, it will increase the liklihood of getting both characters.For example, if the lesson using LCWO order, was greater than 10, then both F and L are potential practice letters. If MPT had generated KFUMS then the <cc> option would detect the F, and then randomly change another character to be an L, as in KFUML. This gives the learner practice of both characters in the same code group.
Note: Group lengths less than 3 are not modified; at most two pairs per group are modified and the selection of them is random as well. /
Example 29: <cc> using characters from -lesson, or cgList get repetition practice
text4morse -lessonList -lesson=5 text4morse -lessonList -cgList="abc"
The default characters of lesson 5 are: kmures. The output would be ever increasing strings (in order of string), like: K KM KMU KMUR KMURE This continues until the default -num, "words" is reached. If you add the option -random, then the characters are randomized for the chosen set. U UR URK URKM ....
Using an optFile instead of options on the command line **** below is the options file <demo.opt> ******* **** line numbers are NOT part of the file, they are for the notes that follow 1 in=demo.txt 2 prosign=prosign.txt 3 out=fileToGiveLCWOToPlay 4 inlist="A-Ya-y" 5 inLen=3:5 7 num=11 9 ordered 10 11 cgLen=5:5 13 cgList="a-z0-9,.?/=@" 14 repeat=2 15 mixedMode=3 16 MMR 17 preLen=1 18 preList="012" 19 sufLen=2 20 sufList=".," 21 random 22 DM=3 23 delimiter="?^/^<SK> ^QTH " 24 delimiterRandom 25 #END ******* end of file 1,2,3 Input file of potential words to be used; prosign file already listed, output file to give to tutor program. 4 The characters an input word may contain or else its discarded. Note they is no "y", so the word "lazy" is discarded. 5 The minimum, and maximum length of an input word, or its discarded. Note "jumped" is longer than 6, so its discarded. 7-10 Some global options. Num limits the words in output (note a sequential repeat of a word is not counted). The output line len, is approximately this long unless it would split a word. Ordered means the input words are Not-Randomized, so they are in the order they were found unless there were discards. 11-13 Are for code groups. In this example, the code group is created because of the mixedMode option. The lengths for min and max are the same so the code groups are fixed size. The characters in a code group are not related to any other list option. 14 Each "word" that passes the filter criteria of: min, max, and inlist, will be shown twice. 15,16 MixedMode means the user wants a code group mixed in with words read from file. Here the 3 means a code group will appear after every 3 words - normally. But MMR, indicates that the behavior is randomized, so you could see multiples of 3 words without a code group. 17-21 Prefixes and/or suffixes may be added to words (note prosigns randomly replace a word, therefore they can get a prefix or suffix. The number as in sufLen=1:2, means the word gets from 1-2 characters added. The sufList and ist are the possible characters (they are limited and different in the example to easily see the effect. The final option random, means either could be suppressed on any given word. Note that a space is a viable character, so it could make random character(s) just before or after a word. 22-24 Delimiters are strings that delimit or separate words. The list of values are separated by "^". If DM is greater than 1 (DM - delimiter multiples), between 1 and the DM value of fields from the delimiter list may be concatenated together (spaces are supported). delimiterRandom means the appearance is random. 25 The #END stops the reading of the options file. The remainder of the options will be discussed below. ***** Below is the practice text generated which does NOT use any LCWO features, I'll add them shortly. 0THE 0THE <SK> QUICK QUICK QTH <SK> 2BROWN 2BROWN QTH ? 0<AS> 0<AS> FOX FOX ?<SK> k0OVER 0OVER ?/<SK> 0THE 0THE <HH> <HH> <SK> / DOGS. DOGS. ? 0BACK,. 0BACK,. QTH THE THE QTH <SK> Comments: So you can see the words: THE, QUICK, BROWN, FOX, and OVER, are from the in file, in order. <AS> and <HH> were from the prosign file, they are treated as words. They were randomly injected into into the word flow. ` Note "lazy" and "jumped" were discarded for length or character make up respectively. THE, BROWN, <AS> and OVER got a prefix character added (prefix length=1) and its one of the characters in list (012). QUICK and FOX got neither a prefix or suffix because the random option was set. DOGS and BACK got a suffix, 1 or 2 characters (suffix length=2) from sufList (,.). BACK got both a prefix and suffix. Every other word is separated by a delimiter string, you see <SK>, /, QTH. Since the delimiter random option delimiterRandom is set, sometimes it was suppressed. All the "words" are duplicated due to the repeat=2 option. Now lets go back to the options file, assume the #END line has been removed, leaving all the options as above, lets add as many LCWO options are possible. The output will be much more complex (thankfully without any need for typing) and allow LCWO.net to give us on-the-fly changes to speeds (character and effective, tones, etc.)
While the -in option searches the input file for words (strings of ONLY letters), the -text options can find any contiguous string of characters which meet the selection criteria of the -tutor and -lesson options (plus ^ and <> which can be used for proSigns). In other words, if you are at lesson=15 for a given tutor, and that means you know "kmuranes,/5" (just an example), then ANY space separated string in the input file which includes only those characters (and possibly proSigns) will me matched.Example 30: an alternative to the <in> option for word match only
text4morse -textFile=input.txt -lesson=12This allows you to get a practice text that could include: words, numbers, puctuation, call signs, or code groups if they are in the file.
![]()