[CQ-Contest] N0SS Pileup Tapes

Tom HammondNØSS n0ss at earthlink.net
Wed Jun 27 12:18:23 EDT 2001

I hope this isn't too far 'off-topic'... it is (kinda) contest-oriented.

Over the past several years, I have received numerous requests for 
information on HOW I make my pileup tapes, and requesting copies of my 
software. The software IS available, but it may be more involved than you 
wish to get into.

In the hope of answering similar requests in the future I have written a 
'boiler plate' document that I'll now save for the future. I am including 
it below, in case you might be interested.

The operation is probably not nearly as 'turn-key' as you might have expected.

Finally, if ANYONE knows of a CW driver which can be accessed from MS 
Professional BASIC (QuickBASIC - DOS) and which will drive a sound card, 
PLEASE tell me. I really need one!!! The method I'm now using is pretty 
'clunky'... but it does work.

73 - Tom Hammond   N0SS

Steps N0SS takes to make one CW Pileup...

    1) Make one list of 105-110 callsigns. Be sure that there are
       no dupes... <g>

    2) Format the callsign list into two files which contain the
       calls and 'character' information about each call. The
       'Character' information contains information about:

       A) CW speed for a particular call (if this parameter is not
          set, the program will automatically select a speed
          between 25 and 40 WPM), but you can tell the program
          what speed to us if you wish. User-selectable parameters
          are settable from 5 to 60 WPM, but the software will
          randomly select between 20-40 WPM.

       B) CHARACTER DIT-to-DAH ratio of the signal. This is
          normally randomly selected by the program, but can be
          set my the user. It will allow the code to sound like it
          is hand-sent, sent from a keyer, or sent from a bug.
          Parameters are settable from 2.5:1 (handkey) to 5:1
          (bug), with 3:1 being equal to keyer-sent CW with 50%

       C) DRIFT of the signal. This parameter is NOT selected by
          the program. It is normally OFF. But the user can turn
          it on. When it is turned on, it will look at the
          frequency of the CW TONE to be used for the current call
          to be sent and then decide whether to allow the tone to
          'drift' (QSY) up or down the band while the call is being
          sent. Parameters are:

             0 - OFF
             1 - ON

       D) CW NOTE - This is the "T" in RST. Again, this is
          normally turned OFF and must be turned on by the user.
          Three choices are available to the user:

             0 - OFF
             1 - Chirp
             2 - RAW AC on the tone, may also include some chirp

       Note that I have a program which will break the call list
       into two files. It will create a data record in the
       following format:

       Note: Input record format follows (5 variables, separated
              by commas)

             N0SS N0SS,CWSendSpeed,DitDahRatio,Drift,CWNote
                 ^          ^            ^       ^     ^
                 |          |            |       |     |
                 |          |            |       |     +- 0=Off
                 |          |            |       |        1=Chirp
                 |          |            |       |        2=RawAC
                 |          |            |       |
                 |          |            |       +- 0=Off
                 |          |            |          1=On
                 |          |            |
                 |          |            +- 2.5 to 5.0
                 |          |
                 |          + 5-60 WPM
                 + Text to send (note that call is shown 2 times)

    3) Once the two data files of calls have been created, I then
       use a text editor (EDIT.COM, or any other) to edit the
       contents of the file to give some of the calls a little
       more 'personality'. This is where I will enter special
       settings for the Speed/DitDahRatio/Drift/CWNote.

       You will note that when the data record is
       created, the callsign is sent so that it will be sent two
       times. When I edit the data, I will remove many of the
       'double calls', and only have a call sent one time.
       This is to help pick out the operators who can pick out a
       call the first time it is sent, instead of having to wait
       to have it sent another time.

       A 'normal' record would look like:

       N0SS N0SS,,,,

       If there is no data between the commas, this makes the
       record the same as:

       N0SS N0SS,0,0,0,0

       Any time a blank or a '0' is found, the program will
       randomly select an appropriate value for that parameter.
       Except that it will not select values for Drift and CWNote.

       If I have edited the record, it might look like:


       This means, send "N0SS" one time, send it at 45 WPM, make
       it sound like a bug, allow the signal to drift, and make it
       have a rough (T4) note.

    4) Once the call lists have been edited and SAVEd, they can
       then be used by my (compiled BASIC) PILEUP program to
       generate the actual sound recordings I will use to make the

       Normally, my pileups are only two levels 'deep', no more
       than two calls sent at any one time. I could add more
       levels, but two seems to be adequate

       My PILEUP generator program cannot create two tracks at a
       time. It created one track at a time. I connect a cassette
       deck to the output of my sound card and record the first
       track as it is sent. Then I record the second track

       As the program generated each sound track, it also creates
       a "LOG" file on the PC which records all of the parameters
       used to create the call when it was sent. This record
       includes an indicator of the relative TIME the call was
       sent (to indicate where it appears in the recording), and
       all the other sending characteristics applied to that call
       when it was sent.

       NOTE: In order for me to have the CW created on my sound
       card, AND to have the character timing and speed send
       accurately, I had to 'play' with the CPU clock speed used
       while the program was running. As a result, when I am
       finished running the PILEUP program itself, I must manually
       RESET the PC's clock/calendar back to current time.

    5) When both call files have been sent and recorded, I then
       PLAY them BACK into the PC and record them on my hard drive
       as individual WAV files, so I can mix them together using
       WAV file editing software.

    6) When the two WAV files have been created, I will mix them
       together and I usually cut off a few of the calls at the
       end of each file, in an attempt to have exactly 100 calls
       sent in the pileup.

       Because some calls take longer to send that others, I
       usually do not have an even number of calls on each track
       once the 100 calls are selected... one track may contain
       103 calls and the other may contain only 97 calls.

       Once the basic pileup has been edited, I will save it to

    7) Once the two call tracks have been mixed together, I then
       add some QRN, just to make things interesting. The QRN was
       recorded about 15 years ago, on a dark and stormy night, on
       80M. I have WAV files of the QRN at several different
       levels, to match with the particular level of the CW on the
       pileup. Too much QRN and only a few calls will be copied.
       Too little QRN and MANY calls will be copied. I try to
       match the level of QRN to the level of expertise of those I
       think will be copying the pileup.

    8) I will now mix the selected QRN file with the pileup file,
       to create a complete pileup.

    At this point, the pileup is complete. However, I usually add
    a leading 'introduction' message to the pileup, so those who
    are about to listen to the pileup can calm down and adjust
    their headphone levels.

    Once the final WAV file has been created, it can be recorder
    onto a cassette tape for use. However, most recently, I have
    been e-mailing the WAV file to the person requesting it, and
    then they will either create their own tape, OR convert the
    WAV file to a CD-playable file. Converting the WAV file to CD
    seems to be the best way to use the pileups... easy to carry,
    and CD players are always easy to find.

    But wait... there's more to be done...

    Now that the recording has been made, I still have to create
    the printed pileup LOG, so the results of the pileup can be
    checked and scored.

    9) Remember the LOG file that was created while the individual
       pileup files were being recorded? Well, that is what I use
       to create the final ANSWER SHEET.

       One line from the LOG file will look like this:

       12619  27   614  3.3   44  ZP99CA
         ^     ^    ^    ^     ^    ^
         |     |    |    |     |    |
         |     |    |    |     |    +- Call sent
         |     |    |    |     |
         |     |    |    |     +- # of call (44th call sent)
         |     |    |    |
         |     |    |    +- DIT to DAH ratio 3:1 (keyer)
         |     |    |
         |     |    +- CW Note = 640 Hz
         |     |
         |     +- 27 WPM
         +- 12619 Time 'ticks' from the start

   10) I now use a text editor to edit each of the LOG files to
       remove the calls which I removed from the WAV file, so that
       there would be 100 calls in the pileup. I then save the
       edited lists.

   11) Using a high-quality text editor, I now combine the two LOG
       files and I SORT the records, using the 'Time ticks', so
       that the calls are arranged in the order in which they
       appear on the pileup.

   12) I then strip off all the data but the calls. I also remove
       the second call, if it was send two times, so that only one
       call appears on a line. I save this file.

   13) I load the sorted list of calls into my word processor
       program and format them into 3 or 4 columns of calls so
       they can easily print on one page, for the pileup scorers
       to use when the score the pileups.

CQ-Contest on WWW:        http://lists.contesting.com/_cq-contest/
Administrative requests:  cq-contest-REQUEST at contesting.com

More information about the CQ-Contest mailing list