Note: this section is updated for WriteLog 12.x

Based upon the ham radio contest you are operating or your operating class for the ham radio contest, some things will need to be configured for each contest. Let’s go down the menu list.

The specialized areas to examine for each ham radio contest are:

CW/RTTY/SSB Messages (also PSK, using RTTY format)

The CS/SSB/RTTY Memory Setup window allows setting up automated messaging for the ham radio contest through function keys for SSB, CW, RTTY, and PSK. Up to 20 messages may be stored for each contest (note the ‘normal’ keys F2-F11 and the ‘Shifted’ keys Shift-F2 through Shift-F11). Pressing a function key sends the message associated with that function key in this window over the air. Likewise, pressing Shift-function key sends the message associated with that function key over the air.

You access the automated messages here:


WriteLog supports twenty CW/RTTY and SSB messages each for a ham radio contest. The Automated Messaging supports some automatic variables as well. See F5 where %C is noted? To WriteLog, that means to send whatever the call is in the QSO Entry window. Also note that CW/RTTY messages are the Normal and Shifted keys while SSB messages are stored in the SSB and Shifted SSB areas.

NOTE: If you have a .WL file saved from some other contest, you can read the CW memories directly from it by clicking on the Browse button.

CW/RTTY/PSK Messages

For CW and RTTY messaging, you must type in what you want sent in the CW/SSB/RTTY dialog box above. The variables you can input and invoke depend upon the contest module you select. Hint: you will normally want to add a space character as the last character in the memory so that if you type message keys in succession, a space is sent between them.

There are specific variables only associated with RTTY. For good examples of RTTY messaging for RTTY contests, I strongly suggest you visit Don, AA5AU’s, RTTY Contesting web site where he offers specific messages for RTTY contests for users of WriteLog.

For CW or RTTY contesting, the specific variables and their meanings follow (from the WriteLog Help file):

The memories have the following special properties if there is a “%” character followed by a:

digit n (in the range 1 through 5)

The current QSO number is substituted for the % when that message is sent. The number sent will be preceded by enough “T” characters in Morse (or “0” digits in RTTY) to ensure that at least n characters are sent in the number. For example, if the sequence number is one, and there is a “%3” in the F3 field, then pressing F3 will send “TT1”. This is for contests that require a “three digit serial number”.

the letter “B”

The characters in the memory between a %B and a following %B are ignored (and not sent) unless the current Entry window has at least one character in its CALL field and that call sign is a duplicate on the Entry window’s current band. Under these conditions, the characters between the %B’s are sent, and any characters following the final %B are ignored. If there is a %C before the %B in the memory, then when the “Special case” for %C described above is in effect, the dupe check is also held until you tab or space out of the CALL field. In this special case, only one pair of %B characters will be correctly processed, and they must appear after the %C.

the letter “C”

The contents of the “CALL” field in the entry window are sent. If the CALL field is blank, then the CALL from the previous QSO is sent.

Special case: If, when you press the function key corresponding to a memory with %C in it, you also have the cursor in the CALL field of the Entry window, then WriteLog switches to live CW transmission from the Entry window. Each key you type not only is recorded in the CALL field but is also transmitted as CW at the appropriate time. WriteLog shows you it has entered this mode by drawing a red rectangle around the CALL box. Typing BACKSPACE attempts to not send the last character. (Some CW keyer options (PK-232 and W5XD keyer) do not support this option.) Any characters following the %C in the memory are held until you tab or space out of the CALL field, or until the message being sent catches up to your typing, or if you stop typing for more than 1 second. (You can extend or shorten the 1 second delay using the LiveCwDelayMs entry in the [configuration] section of WRITELOG.INI.)

the letter “D”

Like “C”, the contents of the “CALL” field in the entry window are sent, but the special handling when the cursor is in the CALL field does not happen, and, if the CALL field is blank, it does not send the previously logged call.

the letter “E”

An end-of-transmission character is added to the transmit buffer to switch back to receive mode (only useful for RTTY).

the letter “F” followed by a digit n

The exchange field number n from the entry window is sent. The numbering of exchange fields is left to right starting with one. If the name of field n is “SNT”, then “599” is sent as “5NN”.

To determine the number of the field, open the Contest|Exchange Format Setup dialog window. When asked if you want to completely start over, answer “no” and you will be at the dialog window with the names of the fields on the far left starting with “Call.” Count down the column until you come to your field that you want to place in the messages.

For example, counting down from CALL to the SNT field is 16. So your entry would be %F16 to send the contents of the SNT field.

the letter “H”

The call sign in the Entry window is looked up in “Friend.ini”. If it is found then the text corresponding to the call is sent. So if, for example, Friend.ini contains the entry “W5XD=HI WAYNE”, then, if W5XD is the call in the Entry window, then “HI WAYNE” is sent instead of the “%H”. By default, the section in Friend.ini that is used is “[HI]”, but the “HI_SECTION” entry in the “[Configuration] section of WriteLog.ini can be edited such that WriteLog will lookup some other section in “Friend.ini”.

the letter “I”

A type-in box pops up and any characters typed into the box are inserted in the message in place of the “%I”. Clicking the Cancel button on the type-in box cancels the entire message.

the letter “M” followed by digit(s) n

The entire contents of the memory Fn are inserted into this message. For example, %M2 inserts the message for F2. Add 20 for shifted memories, so %M
22 inserts the message for SHIFT+F2.

the letter “N” optionally followed by a digit n

The serial number is sent, padded with leading zeros if necessary to get to n digits. If the mode is CW, the digits are translated to letters according the [Cut-Numbers] section in WRITELOG.INI.

the letter “P” followed by a digit n

The exchange field number n from the previous QSO is sent. The numbering of exchange fields is left to right starting with one. If the digit n is zero, then the previously logged serial number is sent.

the letter “R”

A new line character is sent (only useful for RTTY and PSK).

the letter “T”

The time of day in four digits is sent.

the letter “X”

In two-radio operation, this retains the current transmit focus rather than switching to the radio with the keyboard. The %X sequence is ignored if it appears anywhere other than the very beginning of the message, and it is ignored if the transmit focus and keyboard focus are already the same. (This command interacts with the “Auto-Resume CQ” function). You should only program the %X sequence in the CW memories, and its appearance in the CW memories applies to phone as well.

the letter “O”

The RIT is cleared on the connected radio (if its radio interface supports this function).

the letter “W”

The Entry Window is cleared.

the letter “L”

The QSO in the Entry Window is logged.

the letter Z followed by a letter A-Z and a digit n

If there is no letter between Z and the digit, then the frequency for the ham radio in Entry window number n is sent. If n is 1, it is the top window, if n is 2 its the next one down, and so on. If there is a letter, the networked station of that letter and its ham radio specified by the number n is sent.

any other character

The current QSO number using the minimum number of digits is sent.

The programming of the memories can get a little complex. Here is an example for the Sweepstakes exchange:

“%C %BQSO B4%BNR % B W5XD 71 STX”

This means: send the other station’s call followed by a space. Then do a dupe check on the call in the current Entry window. If the station is a dupe, then send “QSO B4”, otherwise send NR, compute the next sequence number and send it, followed by “B W5XD 71 STX”. There is no way to override the dupe check. If you want to send the exchange to someone that is a dupe in your log, then you must program an additional function key without the %B characters.

Messaging is the most complex configuration item for individual contests. Be assured that they won’t be done just once, either. I typically modify my messages (quickly) 4-5 times during a contest adjusting to conditions. But the basic configuration for the ham radio contest is done before the ham radio contest starts.

CW Only Options

The CW keyer can also be programmed to temporarily change the CW speed during the transmission of a CW memory message. A “<” character in the message causes the speed to step up one step and a “>” character causes the speed to step down one. These characters should be matched in the message (i.e. every “<” should have a matching “>”) although the speed will revert back to the normal speed within 5 seconds after the transmission of a CW message with unmatched speed steps.

Morse prosigns are entered in the memories using ASCII characters that don’t appear in the Morse alphabet:

SK [
AR @ (also TAB on the CW keyboard)
AS ]
AA +
BT –
KN #

^ dot-length space (the caret is upper case 6 on U.S. keyboards)

SSB Message Configuration

This section assumes you have done the “First Time Setup” for identifying where your WAV files are located in the Ports dialog box.

Record Messages configuration

If using an NA interface or a W9XT interface, follow their instructions for recording messages for your DVK.

If using the Windows Sound Card for your DVK, then record Wave Files for messages and locate them in the WriteLog\WaveFiles sub-directory, or the directory where you have determined to store them.

There is only really one rule that you MUST follow: your recording file must be named in the following format in order to work correctly with the function keys:

msgx.wav (where ‘x’ is the function key number)

So, for example, to send your call on function key four, your Wave file with your call recorded must be named ‘msg4.wav’ and be located in the sub-directory you identified in the Ports window.

Any program that can record and save Wave files will work just fine.

Secondly, you can, once the file names are established and located in the Wave file sub-directory identified in the Ports section, also record ‘on the fly’ using your sound card connection to your microphone. To record messages on the fly, press the ‘Shift’ and function key to record (e.g., F4) together and begin recording your message. When finished, press the Escape key.

If you type ‘Shift’ and the function key being recorded (e.g., F4) and making a mistake, simply press ‘Shift’ and the appropriate function key again (e.g., F4) to cancel the recording.

Recording SSB messages

This final step integrates the previous steps and, like CW, defines what will be sent when a function key is pressed during the ham radio contest.

To access the actual SSB message window, from the WriteLog toolbar select ‘Setup’ and then click on the ‘CW/RTTY/SSB messages’ selection which will produce the following window:

Note the ‘SSB’ option in the lower right corner of the box. Selecting the SSB option changes the screen to look like this:

Note that the messages are standard Windows Wave Files named the the same as the Function keys to be pressed during the ham radio contest and placed in the directory noted in ‘Setup|Ports.’ Also note that if you have worked the ham radio contest before, you can import the messages from that ham radio contest by clicking on the ‘Browse’ button and finding the appropriate contest file for the import.

Note: for SSB messaging to work properly, you MUST select ‘SSB’ in the check box. Otherwise WriteLog will be a bit confused and won’t send your “msgx.wav” files, just the ‘special characters’ like the call sign.

The above particular setup reflects a bias of mine in that there are simply messages, complete messages, associated with function keys. However, all of the abilities to use the special characters to send variable information as done in CW, RTTY and PSK are valid for SSB. The characters, and how they can be placed together, can become very complex. For a complete explanation of the characters, please refer to the above section.

For example, let’s say that you wanted to send the call of the station that you have entered in the Entry Window and the exchange. You would configure, most likely in F2, a line in the F2 position that looks like:

%C msg2.wav

This would cause WriteLog to go to your Wave directory identified in Setup, take the individual WAV files associated with characters in the Call in the Entry Window, and then send the MSG2.WAV file. So if my call (K9JY) were in the entry window, the program would send the following WAV files based upon the above command:


This is a great way to automate the sending of SSB. But, getting the individual letters to flow and provide more real life sending requires a bit more work. Take a look….

How to Really automate SSB messages

Bob (Whitey), K1VV, and his M/S team in the Yankee Contest Clipper Club did an extensive amount of work in trying to get the Sound Board and Wave files to work for the ham radio contest and to sound as realistic as possible. I shamelessly asked him to document his process and he graciously provided how he and his team got the wave files to work the way we all would want them to work. I’ve followed this process – I’m a convert. It’s a bunch of work, but most of it only needs to be done once.

With all thanks to K1VV and the YCCC, here are the steps that need to happen to make it work great:

  • Record the wave files
  • Edit the wave files to remove the dead space
  • Match the wave file output to your radio output
  • Insure the audio format of all the wave files match

All of these steps show the use of audio recording programs – just make sure you do all the steps.

Record the wave files

You may record the wave files through your normal microphone that came with your computer, a standalone program, or using the ‘on-the-fly’ method for function keys outlined above. Here are the points on the recording:

  1. Record all letters A-Z as individual wave files for each letter (i.e., a.wav, b.wav, etc.)
  2. Record special characters: ‘slash.wav’ for portable, ‘question.wav’ for ? (my content for a ? is ‘something,’ as in ‘Kilowatt Nine Japan Something’), and ‘space.wav’ for a blank
  3. WriteLog will take ‘letter pairs’ in preference to single letters if you record them. If you record a ’40.wave’ file consisting of ‘forty’ as the content, you will answer LZ40Z with part being ’40.wav’ instead of ‘4.wav’ and then ‘0.wav.’ If you’re in zone 10, it makes a lot of sense to record a wav file of ’10.wav’ with the content of ‘ten’ so you can send your zone with one wave file.
  4. Record each of your stand-alone function key messages (e.g., the CQ message) and save them in the format of ‘msgx.wav’ where ‘x’ represents the function key number.

Edit the wave files to remove the dead space

This is an important step because it removes the ‘choppy’ aspect of the recordings and removes most of the unnatural sounds from the recording. Using your audio program, open up your saved wave file recording so that it is active. Do so by clicking on ‘File|Open’ and then select a wave file from your WriteLog sub-directory where you have your wave files.

Below is using the deprecated Sound Recorder program from WriteLog. But the steps will be the same with your audio recording program, it is just the actual features to get to each function will be different.

Or, after recording your wave file using the Sound Recorder and saving it, you would now edit it using the following steps…

Sound Recorder

Some navigation stuff. The furthest left arrow button is ‘go to the beginning.’ The next double arrow to the right button is ‘go to the end.’ The middle single arrow to the right button is ‘play.’ The second from the right square button is ‘stop.’ The red button on the furthest right is ‘record.’

Sound shows up as bumps over the straight line as you can see to the right of the black part of the screen. You want to edit out the blank beginning and end of the recording to get rid of ‘dead air.’

The best way to do this is to slow the recording down to give you more ‘straight line’ to play with in order to edit the dead air out closer to the actual sound. To do so, select ‘Effects|Decrease Speed’ as shown below:

Sound Recorder Effects — Decrease Speed

Now you are in the best position to edit out the dead air. To do so, click on ‘Edit|Delete Before Current Position.’ Click on the slider tab at the beginning of the message and then use your right arrow on your keyboard or your mouse until you see the start of the audio represented by movement off of the straight line. Here’s what my ‘a.wav’ file looks like after removing all before current position:

Sound Recorder — A WAV file

Note how the sound just starts in the scope window.

Now do the same for the end of the message. Move your slider tab until the audio just goes away and you show a straight line shown in the example below and then Select ‘Edit|Delete After Current Position:’

Sound Recorder — A WAV File — End

See the position of .82 seconds out of a total length of 1.43 seconds? So deleting after the current position chops almost 6/10th of a second off of the recording. My personal (K9JY) opinion is that this editing with the audio just to the left of this straight line provides you the best spacing between letters.

Now go back and increase the speed so it sounds normal. Do so by selecting ‘Effects|Increase Speed’ as shown below:

Sound Recorder — Increase Speed

Now save the file by doing a ‘File|Save’ and your wave file is now ready to be played. Do this for *each* of your wave files. Tedious, but a good thing…

Match the wave file output to your radio output

If you now try this with WriteLog and/or with your radio (into a dummy load), you will hear that your messages all have different output. This step is to match the output of your wave files with that of your normal radio voice. You do this so there isn’t much natural difference between when you talk and when you play a wave file.

While talking into the rig microphone, adjust the Mike Gain and the Processor Gain until you show about 6 DB of compression – but no more than 10 DB of compression. Set your meter to monitor compression.

Now, with the cursor in the QSO Entry window of WriteLog and with the Sound Recorder window still open, hit a function key so that you play each of your wave files. You will now compare the compression amount of the wave file with that of your regular talking on the radio. If the wave file is not as high as when you spoke on the radio, go to Sound Recorder and increase the volume. See the above picture where under ‘Effects’ is says ‘Increase Volume (by 25%)?’ Click on that until the radio output and the wave output closely match.

This also, of course, works in reverse. If the wave file is too loud for the output, select ‘Decrease Volume’ from the Effects menu. Do this for each of your files (again, tedious, but well worth it) until completed.

Insure the audio format of all the wave files match

There is a problem here. K1VV found this through trial and error and we can all benefit from his learning experience. Here is the premise: all the wave files MUST be in the same audio format. When you record wave files, especially if you record some with a recording program and the ‘msgx.wav’ files for your function keys with the ‘
on-the-fly’ recording feature, for some reason the audio format is different between the regular wave files and the ‘msg’ wave files.

And what happens when you hit a function key with multiple files to play (like ‘%C <msg2.wave>’ to send the call sign and then the exchange) is that one will play (like the call sign will all play) and the other part won’t (like the exchange). Or vice versa. In any case…it doesn’t work.

Here’s how to prevent that…

For *each* wave file, open the file in the Sound Recorder. Then select ‘File|Properties’ as shown below. This is NOT the same as ‘Edit|Properties.’ It needs to be the ‘Properties’ selection under the ‘File’ menu.

Sound Recorder — File Properties

Once selected, you will get a window that looks like this:

Sound Recorder — Properties

Click on the ‘Convert Now’ button to give you this screen:

Sound Recorder — Convert Now

You want all of your files to be the same in this ‘Attribute’ area. It doesn’t matter to WriteLog if you’re at 22,000 Hz or at 11,000 Hz or 8-bit mono or 16-bit mono. It DOES matter that all the file formats are the same. (I don’t know why, but it doesn’t work unless they are the same…).

Compare your regular letter wave files (e.g., ‘a.wav’ to your ‘msgx.wav’ files. Usually the problem is in the ‘msgx.wav’ files if you have recorded those using the ‘on-the-fly’ method.

Note: if you do an ‘on-the-fly’ message in the middle of the contest, there is a good chance that your wave files won’t work right. This is how it gets fixed.

The results of these efforts give you a sound card audio output that’s pretty good. It’s not choppy and it matches your normal radio voice. It’s not perfect – but the reduction in fatigue and enjoyment of the contest is much better if you can set this up this way.

Sort Ordering and Serial Numbers

This option tells WriteLog how to address serial numbers during the ham radio contest, if appropriate. For example, in WPX contests, multi-operator stations are often asked to provide serial numbers by band rather than as an overall total (because most other ham radio contesting programs duplicate serial numbers in a Multi environment and the sponsors can’t evaluate logs properly…but that’s commentary).

Access the dialog box by selecting:


Which produces the following dialog box:


Most of the time, especially for single operators, the default ‘Total of all bands’ will work just fine. Use ‘Separate by Band’ if required by the rules regardless of the radio making the contact. Use ‘Separate by Radio’ where the rules require it.

Log Which Radio Makes the QSO

This is a toggle setting, which you can activate by clicking here:

While used mostly in Multi-Op contesting environments, it is also used by SO2R contest entries. The purpose is to aid in auditing 10-minute and 6-band change per hour rules for Multi-Ops and to see how effective the second radio was used by SO2R operators.