User Manual
MS DSP Version 0.7b
by 9A4GL
(Manual by N1BUG and VE5UF)

This is a preliminary manual. We are still working on the final version, which will be released soon. Please check the web site(s) for the latest revision.


1. General Descriptions

1.1 Program Overview

MSDSP is a program to receive and transmit high speed CW and includes a feature set designed to meet the needs of Meteor Scatter operators in all IARU Regions. In Receive mode, it emulates a tape recorder with variable speed playback; high speed CW may be recorded and then played back at a slower speed. In Transmit mode, MSDSP can send CW at speeds from 20 wpm to 3,500 wpm (100 LPM to 16,500 LPM)


1.2 System Reqirements

MSDSP requires a PC with 386 or higher processor running DOS 5.0 or later, a stereo Sound Blaster (or 100% compatible) sound card, VGA display system, and at least 4MB of installed memory (See the following table). MSDSP is not designed to run in a DOS Window on Windows-based computers, but can be run from a DOS prompt in most Windows 3.x and Windows 95 systems.

Sampling Rate    Main         Each of 8     Total XMS
Samp/Second      Buffer       Sec buffers   Memory needed
 8,000           1,240,064    120,832       2,206,720 bytes
11,025           1,709,056    165,888       3,036,160 bytes
22,050           3,418,112    330,752       6,064,128 bytes
44,100           6,836,224    661,504      12,128,256 bytes


1.3 File List

The following files are included with MSDSP:

MS_DSP.EXE     The main program exectuable file
MS_DSP.INA     Configuration (user preferences) file for America
MS_DSP.INE     Configuration (user preferences) file for Europe
CWSDPMI.EXE    Support file
GO32-V2.EXE    Support file
FONT.DAT       Support file

Note: Either MS_DSP.INA or MS_DSP.INE must be renamed MS_DSP.INI prior to using the program.


1.4 Software Installation

??? (yet to be written)


1.5 Software Removal

??? (yet to be written)


1.6 Configuration Options

A number of options can be set in the MS_DSP.INI file. Here is a description of these options.

Define a sampling rate for playback and record. With the current version of MSDSP it is recommended you keep this as high as possible depending on available memory (see System Requirements) to assure best transmit tone quality and record/play sound quality.

Lower values need more procesor time but results in better play pointer precision. Higher values result in a skipping play pointer. Values below 2048 may not work on some systems.

Defines how many pixels will be drawn in the amplitude window. If your graphics card or procesor is slow and you don't want to wait while your computer redraws the amplitude window decrease this value, but this will result in lower quality of the amplitude window display (and it becomes harder to see pings). Valid values are 1000 to 300000. The default is 20000. Values between 100000 and 200000 are good if your system is fast enough. Try it.

WaveColorRed , WaveColorGreen , WaveColorBlue
Sets the color and intensity of signals in the Buffer Display Area. Values for red, green, and blue must be in the range 0 to 63. 63,0,0 produces pure red at maximum intensity. 31,31,31 produces a white display at 50% intensity. Any combination of values may be used.

Changing this may help if you have display problems. Valic values are 0 and 1.

Define whether or not math coprocessor is present. Transmit signal quality will be better if using a math coprocessor. 0=no coprocessor, 1=coprocessor present. Consult your computer's documentation to confirm that a coprocessor is installed.

SpaceDelay ensures that you have ample time to react to hearing a ping and successfully capture its signal to one of the small buffers. Pressing the SPACEBAR while recording marks a 15-second portion of the main buffer which will be transferred to the next-available small buffer when the ENTER key is pressed. SpaceDelay sets the amount of time in milliSeconds by which the beginning of this portion precedes the actual spacebar keypress.

Example: If SpaceDelay is 2500, then the data which is captured to the small buffer will be the main buffer data extending from 2.5 seconds before the spacebar keypress to 12.5 seconds after the keypress. If you press the spacebar immediately upon hearing a ping, you could then wait up to 12.5 additional seconds after hearing the ping, looking for subsequent reflections to include in the capture, before pressing Enter to complete the capture. The small buffer will then contain the first ping plus any pings which have occurred up to the time at which you pressed the Enter key.

Valid values are 1 to 9999.

Defines transmit speed in LPM (letters per minute). Valid values are from 100 to 16,500. The defalt value is 2000 LPM.

Defines transmit tone frequency in Hz. Valid values are from 100 to 5400. Upper limit of valid values also depends on the sampling rate, so the upper limit is sampling_rate/2. 2000 Hz is the default, and is the recommended value for speeds up to 8000 LPM.

Define which serial or parallel port to use for PTT keying. 0=none, 1=COM1, 2=COM2, 3=COM3, 4=COM4, 5=LPT1, 6=LPT2. On serial ports, the RTS line is keyed; on parallel ports, DATA-0 is keyed.

Enables the PTT switching signal if one is specified in TxPort. The PTT signal is switched ON whenever Tx audio output is being generated. This includes normal Tx periods as well as TUNE periods. 0=Disabled, 1=Enabled.

Enables the PTT switching signal if one is specified in TxPort. The PTT signal is switched ON whenever Tx audio output is being generated. This includes normal Tx periods as well as TUNE periods. Specifies the number of milliSeconds delay between the OFF-to-ON transition of the PTT signal and the first transmitted character of Tx output audio. Choose a value which allows ample time for all Rx/Tx changeover functions in your rig to be completed before the first transmitted character is sent by MSDSP.

Defines your callsign (maximum of 8 letters).

Defines the duration of period, only 0, 1 and 2 are valid values: 0=disabled, 1=1.0 min period, 2=2.5 min period. Only 1 minute is generally used in North America. Both 1 and 2.5 minute period is common in Europe.

Defines whether to automatically start recording after receive period is finished. 0=no, 1=yes.

Defines whether to continue recording in a loop (start over at beginning of main buffer when it becomes full). LoopRecording only works if AutoPeriod is off. 0=no, 1=yes.

Selects which sound card input signal will be processed by MSDSP. 0=Microphone, 1=LineIn.

Defines the volume of MASTER mixer. Valid values are 0 to 15. Try 12 to 14 and adjust from there.

Defines which speaker will be used on stereo sound cards (0=none, 1=left, 2=right, 3=both). Try 3.

Defines the playback volume. Valid values are 0 to 15. Try 12 to 14 and adjust from there.

Defines which channel will be used for playback (0=none, 1=left, 2=right, 3=both). Try 3.

Defines the recording level. Valid values are 0 to 15. Start with 12 to 14 and adjust from there.

Defines which channel will be used for recording (0=none, 1=left, 2=right, 3=both). Try 3.

TX1 through TX6
Defines the transmit texts. Here you can use macros: %M for MyCall, %T for ToRadio and %R for Report.


2. Using MSDSP

2.1 Starting MSDSP

Before starting MSDSP, your sound card must be initialized (if necessary). Also the BLASTER environment variable must be set in your AUTOEXEC.BAT file. This line should take the form SET BLASTER=A220 I5 D1 <rest> (assuming address 220h, IRQ 5 and DMA 1, which may be different on some systems). <rest> depends on your sound card. Your mouse driver should also be loaded prior to starting MSDSP.

Start MSDSP by running MS_DSP.EXE.


2.2. User interface

On the top of the screen are 9 buttons, one for [Main buffer] and 8 for secondary buffers. The main buffer holds, depending on the Rx period configured, either 1 minute or 2.5 minutes of received signal. Each of the secondary buffers holds 15 seconds of signal, independent of the configured sampling rate or the Rx period. You can click on those buttons to switch between buffers. [Main buffer] has an [x] button for clearing it. The other 8 buttons have a button for pull down menu where you can choose from the following actions:

Load - import saved signal from hard disk
Save - store signal in buffer to hard disk (if buffer is empty this option is disabled)
Clear - clear the contents of buffer (this is disabled if buffer is already clear)
Volume - change the volume of signal in buffer (disabled if buffer is empty).

Below every button is a small window which is dotted if there is a signal in that buffer.

The main buffer is for recording. When you click on the [REC]ord button (Record button is only available if main buffer is active) main buffer will be filled with signal coming from your rig to Line In on your sound card.

When you hear a ping or burst coming from your rig, immediately press SPACE. (Note: alternately, you may click with your left mouse button in the buffer display area to select the area where the ping signal is located). When the ping has ended, hit ENTER. This will transfer the marked area to the first empty buffer. (Note: alternately, you may transfer the selected segment to a specific secondary buffer by clicking on one of the numbered buttons adjacent to the [COPY] indicator on the left side of the screen). When you press SPACE, a blue rectangle will appear to indicate the 15-second segment of received signal which is selected to be transfered to one the secondary buffers when you hit ENTER.

The blue rectangle may be repositioned at any time prior to the actual transfer. This is done by pressing and holding the left mouse button, positioning the marker with the mouse, then releasing the left mouse button. Any number of segments may be transferred to secondary buffers. If you manually select a buffer to which the ping is to be saved, and if data already exists in the target scondary buffer, it will be overwritten by a new transfer and no warning is given. Recording will automatically continue to the end of the Receive period. When your Receive period is finished, you can listen to what you transferred to secondary buffers during your Transmit period.

When you click on the [PLAY] button (or press P) the program will playback from the begining of the active buffer. Clicking on the [PICK] button (or press I) will playback starting at a position that you have previously selected by clicking with the right mouse button in the buffer display area. While playing (and also if not playing) you can change the Play speed scroll bar and the Play tone scroll bar. Play speed defines the playback speed. This should be -10 if you want to slow down 10x. If Play tone is none then the playback signal tone will not be corrected. When Play tone is set to some frequency then the playback signal will be approximately that frequency modulated with the recorded signal. This is useful if you record a signal of 2000lpm at 1000Hz. If you slow down 20x the signal will be at 1000/20=50Hz and it will be difficult to hear. Play tone enables an "up-converter" effect in MSDSP. Play speed and Play tone have one button on the right of scroll bar to disable/enable that efect. If you have a three button mouse, you can use the middle button to toggle (disable/enable) both effects (speed and tone). There are also available buttons [CROP] and [CUT]. These buttons are only available when something is selected in the main buffer. [CUT] will clear the selected area. [CROP] will delete all except the selected area. Click on the [MIXER] button to change the mixer settings for Master, Wave and Line In. There are also [+] buttons, if you are using a stereo sound card then you can disable (mute) the left or right channel (Note: this may not work on some sound cards). Click the [QUIT] to exit MSDSP. You will be asked if you are sure you want to quit. Type Y to quit MSDSP. As you move the mouse over various screen controls, an explanatory message will appear in the status line at the botom of the screen.

SPACE - ENTER usage: If you hear a ping or burst while recording, press SPACE to mark the beginning of the area to copy. The selected area will begin some time before you press space (this time is defined in MS_DSP.INI as SpaceDelay). When an area is selected you can press ENTER to copy the area to the first empty secondary buffer (if there are no empty buffers, it will be copied to the buffer #8. If buffer #8 already has a signal saved to it, this will be erased and the new material will be saved there).

Note: The [FFT] and [Dcode] buttons are not yet available and may be enabled in future versions of the program.

For Transmit there are 6 text buffers. Each can hold up to 35 characters. Press SHIFT+1 to SHIFT+6 to edit those buffers. Press 1 through 6 to transmit the text in a particular buffer. You can define TX speed and TX tone with scroll bars on screen using the mouse, and edit MyCall, ToRadio and Report fields by clicking with mouse on those fields. The text in Transmit text buffers will be automatically changed if MyCall, ToRadio or Report is changed.

Playback of secondary buffers is normally done during Tx periods. First, select a setting for Play speed that gives a speed reduction consistent with your CW copying ability. Press the function key corresponding to the secondary buffer to bring that data into the buffer display area and place the Pick pointer at the beginning of the visible ping using a right-click with the mouse. Playback at slow speed will begin immediately. Replays may be initiated at any time by repeating the right-click or by clicking on the Pick button, or by pressing the "I" key. While slow playback is in progress, you may adjust the Play tone for best intelliigibility of the slow CW note. (Playback will restart from the beginning when yo do this). Note that you must have a PlayBack speed that is approximately correct, or it will appear to be only gibberish! In fact, if your speed setting is very far off, you may not even be able to tell if you are greatly too fast or too slow. For Example: For 1000 lpm, try 10x. 2000 lpm, try 20x. 4000 lpm, try 40x. 6000 lpm, try 60x. Of course, you will have to adjust these values according to your CW copying ability, the strength of the pings, etc.


2.3. Keyboard usage

Note - the keys listed are shown in Capitol Letters. However, for operation in the program, they must be small (lower case) letters. If you accidentally hit the "Caps Lock" key, you will find that the "P", "I", and other letter keys will not work.

F1 through F8
Select secondary buffers 1 through 8. The selected buffer becomes the "Active" buffer.

Selects the main buffer and makes it the "Active" buffer.

Terminates any current Play, Record or Tx activity


Recording may be done only when the main buffer is the Active buffer.

Initiates playback from the beginning of the Active buffer at a playback speed set by the Play Speed setting.

Stops playback from the active buffer.

Initiates playback of the Active buffer beginning at the location of the Pick Pointer.

Activates the on-screen mixer controls to permit adjustment of audio levels. Playback or record activity is suspended while the mixer controls are visible.

Mark a position some time before the present recording position to prepare to copy to buffer. Available only in record. Used in conjunction with RETURN. See information on SpaceDelay, section 1.4 of this manual.

Copy the selected area to the first empty buffer (if there are no empty buffers, it is copied to buffer #8, erasing whatever was already there). Available only in record. Used in conjunction with SPACE. See information on SpaceDelay, section 1.4 of this manul.

Change your call (Maximum 8 characters)

Change the other station's call (Maximum 8 characters)

Change report

Restore all Tx messages to those defined in the INI file

1 through 6
Transmit texts 1 through 6

SHIFT+1 through 6
Edit transmit texts 1 through 6

Stop transmitting

Save the active buffer to a file. Maximum of 8 characters in the file name. Only secondary buffers may be "Saved" Do not enter the .WAV extension

Load a file to the active buffer. Only secondary buffers maybe "Loaded". The .WAV extension to the filename is not required.

Clear the active buffer

Cut before pick pointer

Cut after pick pointer

[ , ]
Change playback speed. Use "[" to increase speed, "]" to decrease speed.

{ , }
Change playback tone. Use "(" to increase speed, ")" to decrease speed.

Toggle whether speed setting has affect on playback speed

Toggle whether tone setting has affect on playback tone

Toggle whether speed and tone settings have affect on playback speed and tone

Change tranmit speed

Change transmitted tone


2.4 Putting it all together

??? (yet to be written)


3. Known BUGs



4. Copyright

This software is delivered at no cost and is free of all charges. It can be freely copied or installed for radio amateur usage. Any other usage for commercial, professional, or industrial purposes is forbidden. Despite the free sharing nature of this product, a donation of 20 US Dollars (or more) to help offset costs would be most welcome.

Please send me bug reports, comments and suggestions!

The author can be contacted by mail or at the following address:

   Tihomir Heidelberg
   Bjelovarska 17
   43500 Daruvar Croatia




This manual was prepared by N1BUG ( and VE5UF (