Throb V2.6...An Experimental Pulsed Tone Transmission System

Acknowledgements

This is an ongoing development taking place within that part of the radio amateur fraternity involved with the use of digital signal processing to further communication modes. Specifically, much support has come from those interested in "fuzzy" modes such as the various forms of Hellschreiber, and the focus for this interest centres on Murray Greenman’s site:

http://www.qsl.net/zl1bpu/

Although it could have a "fuzzy" offshoot, this is NOT a "fuzzy" mode and the patience of those involved is appreciated. That said, there is a move towards MFSK methods that Murray is actively encouraging and the effort put into this project may be directly relevant to that. Specifically, Nino IZ8BLY and Murray have an MFSK program called STREAM that is at an advanced state of development. See:

http://www.qsl.net/zl1bpu/MFSK

Many enthusiasts have helped with testing and encouragement including:

Arnie Lambe G4BRU. Michael Pastorcich KF4HEY. Paulus PA0OCD.

Peter Martinez G3PLX. Victor Kershaw G3GKI. Bernard Spencer G3SMW.

Ko Versteeg NL9222 Andrew Nicholson. Bernard Bellringer G3JYF.

HB9BGY, AB2CJ, G4JFI, G3GLQ.

Thanks to Victor, G3GKI and Phil W7UFO for advice on the "full duplex" problem, see below.

Thanks to Paulus, PA0OCD for indicating the problem with COM Port keying, see below.

Thanks to Nino, IZ8BLY for several vital segments of code.

Introduction

ThrobV2.6 is an EXPERIMENTAL freeware Multi-Tone Frequency Shift Keyed (MFSK) transmission program evolved while experimenting with DSP on a PC soundcard. It uses a palette of 9 tones spaced 8 or 16 Hz apart giving a bandwidth of 72 or 144Hz. There are enough permutations of the 9 tones when used as tone pairs and single tones to allow the encoding of a modest character set to be sent in a single tone pulse. The tones are sent as a shaped pulse with the leading and trailing quarters raised cosine shaped, and the tones are received synchronously, with the synchronisation being set manually or automatically. There are three transmission speeds of 1 ,2 and 4 Throbs/sec giving respectable transmission rates of 10, 20 and 40 wpm respectively. The 1 and 2 Throb/sec speed use a tone spacing of 8Hz and a bandwidth of 72 Hz and the 4 Throb/sec speed uses a tone spacing of 16Hz and a bandwidth of 144Hz. There is potential to slow it down further for VLF etc. Throb2 evolved from Throb1, which used three consecutive pulses of 1 tone from a palette of 5. Throb1 had enormous limitations but showed that tone techniques can have advantages at low level, that amateur radio gear is able to function with techniques requiring a stability of 3 or 4 Hz, and that radio amateurs can readily use it. The use of raised cosine shaped tones gives a characteristic "throbbing" sound, hence the name of the method.

Program overview

The program is written in Borland C++ Builder and uses a PC plus soundcard running under Windows95. Reception commences with a FFT/inverse FFT stage to provide a 72 or 144 Hz razor sharp band-pass function. A special windowing technique has been deployed to avoid the disjointed output that can be encountered when transforming back from the frequency to time domain after removal or modification of data. The filter samples the incoming audio at 8000Hz 16-bit resolution, and then a decimation of 2 is applied giving a Nyquist frequency of 2000Hz. The sub-spectrum between 800 to 1111 Hz is displayed on a waterfall display. Mouse clicking on the sub-waterfall display window enables the band-pass to be moved within the sub-spectrum for tuning within about 1Hz. The blocks of filtered data are then normalised up to the level of the peak data in the block and then shifted into the right hand side of a memory area holding the previous data block. A display of this data allows the troughs between the raised cosine pulses to be seen and clicking on the display allows the sample start position for a second FFT to be synchronised with the incoming data or it the program can do this automatically. A vertical red line denotes the sample start position. The second FFT calculates the position and intensity of the tone frequencies and these are displayed as green vertical lines in the third graphic display. The character is decoded from this information and displayed in one of two memo displays. Because the data is sideband sensitive, (another major disadvantage of Throb1), the inverted data is also decoded and displayed in the second memo display, thus making the technique insensitive to the sideband used with the opposite sideband data being obviously garbage which can be ignored.

Tuning is tricky, but a test routine is provided to allow practice. Note that the idle character uses a single tone positioned at dead centre. The first three pulses of the test routine and also of transmitted data will be this single central tone, so tuning by mouse clicking on it should set up the reception for the following data. The tuning/stability requirements are great with initial tuning within plus or minus 3 Hz and then maintenance of this position. The initial tuning is fairly easy with the resolution of the waterfall display but maintenance of the position has required the deployment of AFC (button provided) which will shift the window in 1Hz increments to maintain the tones in the central FFT bin for that tone.

Note that the program starts with the AFC and the Autosync. Facilities enabled, and you should see the AFC bring the tuning window into line and the red sample start position bar should position into a trough automatically. In practice, these facilities should be left ON.

CQ and QSL buttons with other macros are available which enter simple messages compounded with the callsign entered at the set-up stage into the transmit buffer.

Clicking on the memo screen carrying the valid print enlarges that screen and diminishes the other memo screen.

Minimum System Requirements

Throb2.6 requires Windows 95 running on a Pentium and it MUST have floating point capability. The program is very demanding on CPU time. Screen savers should be disabled and other processor intensive programs should probably be suspended while running Throb2.6 If the CPU runs short of time there will be an obvious jerkiness in the operation. This may not be disastrous but if it is persistent then you need a faster PC or you need to turn off whatever is hogging CPU time.

Program Installation

Unzip the file "throb26.zip" into a suitable folder (directory). This folder can be placed anywhere but is probably best to create a new one for it at, for instance, C:\throb26\. If online help is desired then the file "throb26.htm" needs to be in the same directory. The program consists of a single .exe file, throb26.exe, which may be run from the Windows95 Start/Run menu or a short cut can be set up in the normal way.

To remove this program, just delete all the files in the folder where Throb26.exe resides.

Hardware Installation

Connect a screened audio cable from the audio output of your SSB receiver to the line-input jack of your soundcard. Either left or right input (or both) will work. Don't use the microphone input of the soundcard. It's best to use a dedicated auxiliary audio output on the receiver that does not vary in level with speaker volume.

Connect a screened audio cable from the soundcard audio output to the microphone input of a suitable SSB rig. Some rigs provide an accessory input that may be more suitable.

Operation

On running the program, there will be a pause and then the waterfall display should appear and show a moving representation of the audio spectrum. Adjust the sensitivity of the waterfall display to suit conditions using the TrackBar provided. If the lines across the display are shown as red then the input is overloaded and the soundcard audio-control window should be called up and the line-input level adjusted accordingly. By the same means the audio output level may be set to suit the transmitter, and it may be considered an option to leave this window displayed.

There are two screens for reception. Because the Throb mode is sideband sensitive, both LSB and USB versions are printed and the user can disregard the version that is obviously garbage. Clicking on the sensible screen will cause it to expand at the expense of the other.

Run set-up from the dropdown menu to enter your callsign for the CW ident. You can also enter a COM Port setting to allow TX switching, which switches DTR and RTS when going to transmit. Also it is possible to flag for a delay in output on switching to transmit. If this is called for, the first "throb" output is silent to give slow switching of equipment to take place. Once the callsign has been entered then the CQ and QRZ macros will operate and when clicked, will place CQ and QRZ texts into the transmit window ready for transmission.

There is a small screen provided for entry of the callsign of the station with which you are in contact. When this is entered the two macros will allow "callsign de callsign" messages to be placed in the transmit window ready for transmission. Three further macros allow for small text files (less than 255 bytes) that have been edited into the same directory as Throb26.exe to be read and placed into the transmit window ready for transmission. These should be named "1.TXT", "2.TXT" and "3.TXT" respectively. Note that these should be ASCII text files produced using a simple text editor such as Notepad or DOS Edit.

A "tune up" single tone is provided when in transmit, and this runs continuously until it is cancelled. Note however, that when tone pairs occur in actual transmission, these add and subtract to give peaks and troughs and hence great potential for OVERLOADING. Please keep an eye on your ALC so that this does not occur; it is safest to run with NO ALC indication occurring. Nothing gives a linear mode such as this a bad name so quickly.

The soundcard audio control window may have "advanced" tone control setting facilities, if so set these for minimum bass/treble.

A button has been provided to stop printing when not required, as the method will print on noise.

Spend time with the test facility which gives practice on locating the central tone for accurate tuning. Note how the receive window between the red bars widens for the 4 Throb/sec speed. Observe the operation of the AFC after deliberately clicking the tuning 1 or 2 Hz off frequency.

Note that because the soundcard input and output functions are now separated, it is possible to externally connect the centre connection of the soundcard line input and line output with a screened lead, and record Throb output to a .WAV file. Any simple recording program such as the Windows generic one may be used. Please use 8000Hz sampling frequency 16 bit mono. In the same way, pre-recorded .WAV files may be played into the program, but they MUST be 8000Hz 16 bit mono also.

Problems

Writing programs for soundcards is notoriously difficult, and I cannot guarantee that the program will work on any given set-up, especially if "clone" soundcards are involved. One or two specific problems have arisen:

One property of C++ Builder that I can do nothing about is when a video display greater than 640X480 is used and then configured for zoomed fonts. This gives rise to all sorts of strange effects with some parts of the display not appearing or working wrongly. If this is suspected try reconfiguring the display.

The program has now been rewritten to separate completely the soundcard input and output functions, and this should have overcome the previous requirement for the soundcard to be capable of and be set up for full duplex operation.

Caveat....

I am neither a professional computer programmer nor a radio engineer. This is for fun...

This has arisen largely because, like so many, I have gazed on the ability of FFT waterfall programs to display signals that can hardly be heard and felt that this must surely be capable of being used for weak signal work.

This may all come to nothing. Please do not blame me for "wasted time". Remember that there is no such thing as wasted time in Amateur Radio...it is just that some time is better spent than other time.

73

Lionel Sear G3PPT lionel@lsear.freeserve.co.uk