Daqarta for DOS Contents



Free Registration

Contact Us
Daqarta for DOS
Data AcQuisition And Real-Time Analysis
Shareware for Legacy Systems
(Use Daqarta for Windows with modern systems)

From the Daqarta for DOS Help system:


Last driver update 8-1-2001.


This driver was specifically designed for the Creative Labs Sound Blaster 16 family of boards, including Sound Blaster PnP models, Sound Blaster 32, Sound Blaster 64, ViBRA, WavEffects, etc. It is not designed for PCI models.

The Creative Labs product line includes a wide variety of models (more than 50) that are nominally compatible with this driver. Each has slightly different features and specifications, some of which are undocumented (such as data polarity and exact input sensitivity). These variations are supported via special SB16.ADC configuration parameters.

This driver includes full duplex support for the STIM3 Stimulus Generator module, which means that it can produce stimulus signals from the DACs while it is acquiring data from the ADC. (Alternatively, it can produce stimuli from the on-board OPL3 synthesizer.) However, most boards allow only 8-bit DAC outputs with 16-bit ADC inputs, or 16-bit DAC outputs with 8-bit ADC inputs... you can't have both the same.

Creative Labs WavEffects and ViBRA models CT4170, CT4171, and CT4172 do allow both ADC and DAC bit widths to be the same, providing simultaneous 16-bit ADC inputs and DAC outputs. This feature is supported by means of special hardware that is automatically detected by the driver.

This driver also allows optional LPT printer port use for Averager or Disk remote controls, stimulus pulse generation, and external sweep triggering.

This driver does not directly configure PnP (Plug 'n Play) cards. It reads the base address of the card from the BLASTER environment string, which should be set by a PnP configuration manager such as CTCM, or via a SET BLASTER= line in your AUTOEXEC.BAT FILE.

You can override this address via the A: parameter on the SB16.ADC line of the DQA.CFG file, but that doesn't actually change the card setting.

The A: parameter may be needed if you are using a second sound card, or you use another configuration manager that doesn't set the BLASTER string. You will then need to use another method to determine the base address of the card.



This driver allows you to specify certain parameters on the SB16.ADC line, which must be the second line of the DQA.CFG file. Each parameter is given as a letter and colon, followed immediately by a value. Use one or more spaces to separate parameters. For example:
 SB16.ADC    A:h220  D:1  H:5  I:5
The order of the parameters is generally not important, except as noted below for the D: and H: parameters if you don't also use a B: Bits parameter

Daqarta will read the BLASTER environment string, if it is present, and use that to set the Address, IRQ, and DMAs. If the mixer chip uses a different address than the DSP, which is a possibility with PnP models, then the BLASTER string will also include an M value which Daqarta will use. Setting an A:, I:, D:, or H: value on the SB16.ADC line will cause that value to be used in preference to the equivalent BLASTER value. A special A:M parameter allows you to set a different mixer address.

You may need to override the BLASTER settings if there is more than one sound card in your system, since there will be only one BLASTER string in the environment. You can view the BLASTER string by entering SET at the DOS prompt.

On most systems, you can probably omit all parameters and accept the BLASTER values when you are getting started. Later you can add parameters for advanced features.

On PnP cards, the D:, H:, and I: parameters will be ignored, since these are read directly from the board and can only be changed by the PnP configuration manager. (CT417x ViBRA / WavEffects boards may require an H: parameter, however.)

The configuration manager must appear in CONFIG.SYS or AUTOEXEC.BAT to configure the PnP card properly before Daqarta runs. This actually sets the physical address of the card, and without it the card is invisible to your system.

Daqarta will exit with an error message if it finds a problem in the SB16.ADC parameters. Once Daqarta is running, you can check to see which parameters have been set by the BLASTER string, configuration line, or default, by checking the board information summary available via the ALT-H Plug-In Help system.


Use this to tell Daqarta the base I/O address for your SB16 card.

You only need to give this parameter if the BLASTER string in your DOS environment is not correct. This normally appears as a SET BLASTER= line in AUTOEXEC.BAT for non-PnP cards. For PnP cards BLASTER is set by the CTCM configuration manager that may be invoked from either AUTOEXEC.BAT or from CONFIG.SYS. (You can view all the strings in the environment by entering SET at the DOS prompt.)

The A parameter in the BLASTER string must correspond to the base address of the card, whether set via jumpers on the card or by CTCM for a PnP card. The most likely reason for the BLASTER string being wrong is that you have more than one sound card installed, and the single BLASTER string is for another card.

If you do need to give the A: parameter here, note that all Daqarta parameters require a colon, and that you should use an 'h' prefix before hexadecimal values, as in:

 SB16.ADC    A:h240
Compare this to the BLASTER format, which would be just A240. The default address for SB16.ADC is hex 220, which will be used if there is no BLASTER string and no A: parameter.

Daqarta checks at the address given, and if it does not find a valid Sound Blaster-compatible board there it exits with a message giving the address it tried:

 Sound Blaster 16/32/64 board not found at 0240h.
The only exception is if you set A:0 to allow viewing of this board Help system without having a board installed or properly configured.

If it finds a board at the given address, Daqarta checks the DSP version number. The DSP is the Digital Signal Processing chip that controls the sampling process, and different chips have different capabilities. Different DSP version numbers also signify other differences between board models, such as which mixer or FM synthesizer chip is present. This driver requires DSP version 4.00 or above, which indicates support for 16-bit operations. If it is less than that, Daqarta will exit with a message telling you what was found and what was needed, as in:

 Board found with DSP version 02.10.
 Requires Sound Blaster 16 board or equivalent,
     version 4.00 or above.


Sometimes PnP cards may be configured with the mixer functions in a different address range than the base (DSP) address given by the A: parameter (or the A parameter in BLASTER). In that case, the BLASTER environment will also have an M parameter present. This driver normally responds to that automatically, but if you have more than one card there will only be a single BLASTER string. If the card that you want to use with this driver is not the one in the string, and if it has a different mixer address, then besides giving the A: parameter you must also give an A:M parameter.

For example, if you want to use a card with a base address of 240h and a mixer address of 260h, you would give:

 SB16.ADC    A:h240   A:Mh260
Note the 'h' before the value to indicate hexadecimal. If you give an A: parameter but no A:M parameter, then the mixer address is assumed to be the same as the base address... the usual case.


PnP (Plug 'n Play) models don't use jumpers to select the base address. A special PnP configuration manager must be run first to set the address of the board, as well as the IRQ and DMA levels... there are no jumpers for these on the board.

The configuration manager does this via a cumbersome process involving a single pair of I/O ports through which any PnP device in the system may be queried as to its capabilities, and then appropriately configured. Prior to this, the board is "invisible" to your system.

There are two aspects of the PnP configuration that are important here:

  • Configuring the board with a configuration manager.
  • Determining what that configuration is, in order to set the SB16.ADC line of DQA.CFG properly. You will only need to do this if you have more than one sound card, and the PnP configuration manager does not set the BLASTER environment string for the one you want.

The normal Creative installation process should have provided a DOS Configuration Manager called CTCM.EXE, which will have been inserted into your CONFIG.SYS or AUTOEXEC.BAT file. (DWCFGMG.SYS is an alternate PnP manager that may be used in CONFIG.SYS, but it uses 1700 bytes of low DOS memory whereas CTCM does not, and doesn't set the BLASTER string in the DOS environment.)

If you have a Windows 9x system, it should be in your C:\WINDOWS\DOSSTART.BAT file. This is the file that is supposed to perform tasks similar to AUTOEXEC.BAT when you select 'Start ... Shut Down ... Restart in MS-DOS Mode'.

Some newer Creative CD-ROMs don't install CTCM.EXE on a Windows 9x system. Instead, each time Windows performs the 'Restart in MS-DOS Mode', it runs CTPNP.EXE. This will refuse to configure your board, reporting that your PnP configuration has changed and instructing you to run Windows again... endlessly.

In this case you must manually install CTCM.EXE from a DOS / Windows 3.1 setup. The problem is that even though there is a complete WIN31 installation directory present on the Creative CD, you can't install anything from it on a Windows 9x system! Creative is aware of this problem, but the best they can suggest for now is visiting their Website and downloading a 700 Kbyte file called CTCMBBS.EXE which has the entire set of Windows 3.1 files, from which you can select CTCM.EXE. At present, it's at:


You might instead find a Windows 3.1 system to install your board in temporarily, and then just copy CTCM.EXE from that. Since CTCM.EXE is not board-specific, you could also use a copy from another system, even one with a different Creative PnP board.

Each time CTCM.EXE runs, it creates a little file called CTPNP.CFG in the directory it's invoked from. That would be the root directory if running from AUTOEXEC.BAT or CONFIG.SYS in a DOS system, or C:\WINDOWS if running from DOSSTART.BAT in Windows 9x.

CTPNP.CFG is a plain ASCII text file that can be viewed with any text editor or word processor. Look for a section that starts with the name of your board in brackets, such as:


The first sound card listed is evidently the one used to set the BLASTER string. Enter SET at the command prompt to see all the environment strings. The above card would appear as:

 BLASTER=A220 I5 D1 H5
The environment will have only a single BLASTER line, even if you have more than one sound card in your system. If the card you want to use is not the one on the BLASTER line, you will need to locate its entry in CTPNP.CFG and use the Port0 value to set the A: parameter.

In the above example, Port0=220 translates to A:h220. (Don't forget the colon, or the 'h'!) All you would need is:

 SB16.ADC    A:h220
(Actually, you would not even need to give the A: parameter in this example, since hex 220 is the value Daqarta assumes.)

You can ignore the Irq0, Dma0, and Dma1 values (which would be I, D, and H values in the BLASTER line, or I:, D:, and H: as Daqarta parameters), because Daqarta reads those directly from the card.

The exception is for CT417x ViBRA or WavEffects models, which don't use a normal High DMA H: value (5, 6, or 7) but two low values (0, 1, or 3) instead. Since the board register only allows one low value (for D:), the low H: value must be supplied manually unless it is the driver default value of H:3. Use the value shown as Dma1 in CTPNP.CFG.

CTCM may set the BLASTER environment to the same value for both D and H on CT417x models, even though CTPNP.CFG correctly shows different values for Dma0 and Dma1. If you just accept the BLASTER settings without giving an H: parameter, Daqarta will be forced into ADC-only operation.

Under rare circumstances, you may need to change the PnP settings used by CTCM in a DOS system. Creative provides the CTCU Configuration Utility for this purpose, which should have been installed in the same directory as CTCM. Use this with caution, and be sure to run the Test option to avoid conflicts with other hardware.

B: BITS PRESET (8 or 16) for ADC or DACs:

This parameter allows you to specify the ADC Bits or the DAC bits (for full duplex mode) as 8 or 16. For most SB16/32/64 models you can only specify one of these, since the other is the opposite. The default is 16-bit ADC and 8-bit DACs.

If you prefix the bits value with a 'D', you specify DAC bits instead of ADC, as in:

 SB16.ADC    B:D16
In this case, since the DACs are now 16-bit, the ADC will be 8-bit. CT417x ViBRA / WavEffects models allow independent control over ADC and DAC bits... both may be set to 16, for instance. The default is still 16-bit ADC and 8-bit DACs, so the above configuration would retain the 16-bit ADC while setting 16-bit DACs. To set the ADC, either use an 'A' prefix or none:
 SB16.ADC    B:A8  B:D16
would set 8-bit ADC and 16-bit DACs.

Note that 'D' usage has changed from earlier versions of this driver. It now refers to DAC, not Duplex. Full duplex mode is now assumed if the STIM3.GEN driver is present.

The DAC bits selected here, either via B:Dn or by default to B:D8, are passed to the STIM3.GEN driver when it initializes so it can configure itself to accomodate this data size. STIM3 does not allow DAC bits to change during operation, so for normal SB16/32/64 models that means the ADC bits can't be changed either... even if the DACs are not turned on in the STIM3 menu. Only the CT417x ViBRA / WavEffects models allow ADC bits to be changed during operation, since they are independent from DAC bits in those models.

If you omit the STIM3.GEN line from DQA.CFG, then ADC bits can toggled between 8 and 16 while running, regardless of model.

If you omit the B: parameter entirely, the (initial) ADC bits will be determined by the order of the D: and H: parameters, if present. The B: parameter always overrides this.

Note that full duplex mode requires different D: and H: values. You can't use a single DMA channel for both ADC and DAC data, so ADC-only operation will be assumed if you set H: equal to D: for non-PnP models, or if CTCM sets it on PnP models. This allows 16-bit ADC operation over a single 8-bit DMA channel. If you also imply DAC operation via B:Dn, Daqarta will exit with:

 'Full duplex mode requires H: value 5, 6, or 7.'
Or, on a CT417x ViBRA / WavEffects board:
 'CT417x (ViBRA) models require H: value 0, 1, or 3.
  H: value must be different from D: value for full duplex.'
If CTCM has set H: equal to D: on a PnP model, it may be possible to use the CTCU Configuration Utility to change the settings. Use this with caution, since it can cause conflicts with other hardware.

CTCM may set the BLASTER environment to the same value for both D and H on CT417x models, even though CTPNP.CFG correctly shows different values for Dma0 and Dma1. If you just accept the BLASTER settings without giving an H: parameter, Daqarta will be forced into ADC-only operation.

C: CHANNEL (Input):

This parameter allows you to change the default Input channel that will be used when you first activate this driver via the Board option. This parameter requires either a number or a letter (case-insensitive):
             Number   OR   Letter
 Mic           C:0          C:M
 CD R          C:1          C:D
 CD L          C:2          C:C
 Line R        C:3          C:R
 Line L        C:4          C:L
As a mnemonic for the CD selection letters, think of the C and D as the left and right letters in 'CD'. The letter codes are the same as those for the G: Gain calibration parameter.

For example, to select the Mic input as the default, you would use either:

 SB16.ADC    C:0
 SB16.ADC    C:M
Channel numbers are reported in the Daqarta title line as "Ch0" instead of "M" or "Mic" for file compatibility between different boards.

These values are also the number of up-arrow key presses you would enter to set a desired input via a Key Macro after using KeyOn, which forces the Mic input.

The default value is the Left Line input (Line L), which is Ch4.

D: DMA LEVEL (8-bit), H: HIGH DMA LEVEL (16-bit), and IRQ

PnP boards are set ONLY by the configuration manager. They do not accept D:, H:, or I: parameters except in the case of CT417x ViBRA / WavEffects models, which require H: to be set manually if other than the H:3 default. Otherwise, they are ignored.

Non-PnP boards allow software selection of DMA and IRQ levels, which can override the jumper settings on the board. Many programs look for a SET BLASTER= environment line in your AUTOEXEC.BAT file, which may have been set by SBCONFIG.EXE when you installed your board. They then use those DMA and IRQ values instead of the jumper settings.

Daqarta will use the BLASTER environment string, but also allows you to use different settings, for example to avoid some conflict that doesn't arise when using other programs. Daqarta reads the old settings before changing anything, and restores them on Quit.

The D: parameter specifies the DMA level for 8-bit operation while the H: parameter is for 16-bit operation. The driver will start in the mode that corresponds to whichever of these is given last. For example, if you give:

 SB16.ADC1   D:1  H:5  I:5
the driver will start in 16-bit mode. If no DMA parameters are given, the default mode is also 16-bit. However, if the B: parameter is given to preset ADC Bits, that has priority over the mode inferred from D: and H: order.

Allowable values for D: are 0, 1, or 3. The factory default is 1.

Allowable values for H: are normally 5, 6, or 7. The factory default is 5. CT417x ViBRA / WavEffects models use H: values of 0, 1, or 3 with a default of 3.

Note, however, that you can set the H: value to match the D: value. This is used to notify the SB16.ADC driver that you wish to use the 8-bit DMA channel specified by the D: parameter for 16-bit data as well. Two 8-bit DMA transfers are then used for each 16-bit data value, tying up more of the CPU time. You thus should use this only if you don't have an available 16-bit DMA channel on your machine.

This single-channel mode is not compatible with full duplex mode, which requires separate DMA channels for ADC and DAC data. If you set D: and H: equal and have also used B:Dn to specify full duplex operation, Daqarta will exit with

 'Full duplex mode requires H: value 5, 6, or 7.'
Or, on a CT417x ViBRA / WavEffects board:
 'CT417x (ViBRA) models require H: value 0, 1, or 3.
  H: value must be different from D: value for full duplex.'

Otherwise, non-duplex mode will be selected by default if single-channel DMA is specified. No DACs will be visible for the STIM3.GEN driver, so it should not be included in your DQA.CFG file in this case.

CTCM may set the BLASTER environment to the same value for both D and H on CT417x models, even though CTPNP.CFG correctly shows different values for Dma0 and Dma1. If you just accept the BLASTER settings without giving an H: parameter, Daqarta will be forced into ADC-only operation.

The I: parameter specifies the Interrupt Request level (IRQ) used when servicing DMA interrupts. The need for this interrupt should not be confused with interrupt-driven sampling used for RTime operation on some "basic" laboratory- type boards, where an interrupt request is generated for each sample acquired. Here the IRQ is used only in conjunction with DMA sampling, to signify the completion of an entire buffer full of data. It does NOT require the special DDISK13 driver that interrupt-driven boards may need for DDisk operation.

Allowable values for I: are 2, 5, 7, or 10. The factory default is 5. Note that 2 and 10 use the second (AT) interrupt controller and hence use a second End Of Interrupt (EOI) command that is not needed when using 5 or 7. Although the time to give this extra command is unlikely to ever be a problem, you might want to use 5 or 7 if there is no other conflict.

If you don't give Daqarta one or more of these parameters, it will read them from the board. However, any program that runs before Daqarta in the same DOS session may change non-PnP board settings to something you don't intend for Daqarta.

The safest course in this case is to always set the D:, H:, I: parameters on non-PnP boards. If you have a SET BLASTER line in your AUTOEXEC.BAT file, you should start with the same values for D:, H:, and I: on the Daqarta ADC configuration line. Note that Daqarta requires the : to be inserted between the letter and value.


The values you enter for D:, H:, and I: are normally used only for the current Daqarta session. On Quitting Daqarta, the settings are restored to their previous values, which were read from the board registers at the start of the session. This insures that Daqarta never disturbs any other use of your SB16 board.

However, even when the SB16 is not in use, it hogs those DMA and IRQ numbers, preventing other boards from using them. (Unless it is a PnP board that has not been set up by a configuration utility, in which case it is invisible to the system.)

To get around this conflict, this driver allows you to control the settings that are stored in the SB16 board registers. Note that using this option may cause conflicts with other software that uses the SB16 board, so caution is advised.

The following instructions apply only to non-PnP boards. Only the configuration manager can make changes to PnP boards.

If you give any of the above D:, H:, or I: parameters with a C just before the value, as in

  SB16.ADC    D:C1   H:C5   I:C7
then when you Quit Daqarta the board registers will be Cleared so that the relevant DMA or IRQ numbers can be used by any other device.

Of course, it is assumed here that the other device can perform a similar function so that when it is not in use it will not conflict with the SB16. That would be the case if the other board was another SB16, or a laboratory-type board such as the DAS-16 where DMA and IRQ values are activated by software.

Conversely, you can use a K instead of the C to Keep the relevant value when you Quit Daqarta, and it will be set into the board register regardless of what value may have been present at startup.

In either case, the C or K only applies to the specific parameter it appears with. You may mix and match as needed, and any parameter that has neither of these will have its initial value restored upon Quit.


This driver normally attempts to load this associated Help file on start-up, and exits with an error message if it can't find it. Setting F:0 on the ADC configuration line tells the driver not to look for the file. You would probably only want to use this option if you are really short of DOS memory, since loading the Help file only increases memory use by a few hundred bytes for its separate link stack and directory. (The file itself shares the text buffer of the Main Help file.)

Note that ALL Help files, including main, can be omitted via an F:0 parameter on the INIT line (first line) of the DQA.CFG file. If this is present, no individual module Help will be loaded.


This allows the calibration of each input channel to be preset to user-specified full-scale values. Note that this does NOT actually change the sensitivity of the input... for that see the R: parameter to preset the input Range. Instead, the G: parameter allows you to compensate for externally-applied Gain from a preamp or attenuator, for example.

It also allows correction for the differing undocumented sensitivities of various Sound Blaster models.

The G: parameter is similar to the main User Unit/V Factor control, except that here the Gain may be different for different inputs. When you switch between them via the Input item of the Board menu, the range calibration will change to match. Note, however, that all inputs are assumed to have the same units, which you can change via the main User Units Name control.

The G: parameter must be followed by a letter to indicate the input it applies to, followed by the sensitivity value. For example,

 SB16.ADC     G:M12.34
specifies that the Microphone input has a sensitivity of 12.34 Volts full-scale on Range 0. The Range may be changed via the R: parameter or the board menu Range control, and the sensitivity will be scaled appropriately. See the Calibration section for details on setting the G: value for ranges other than 0.

The input letter codes (case-insensitive) are:

  M   Microphone
  L   Left Line
  R   Right Line
  C   Left CD
  D   Right CD
  A   All inputs (except Microphone)
As a mnemonic, think of the C and D letters as the left and right letters in 'CD'. (These are the same letter codes that can be used with the C: Channel parameter.)

The value that follows the input letter may be either a normal decimal value or may use "European" notation, with the units prefix replacing the decimal. The prefix character must be one of the standard scientific prefixes recognized by Daqarta, which also allows 'u' instead of 'µ' and 'K' instead of 'k'. Otherwise, this is case-sensitive: 'm' is 'milli' and 'M' is 'Mega', for instance.

Neither the integer nor fraction part of the entry may exceed 65535. If no integer part is desired, you MUST include a leading 0 as a placeholder, as in 'G:M0m12345'. If no fraction part is desired, it may be omitted completely. The following are all valid entries:

  SB16.ADC     G:m12u345   ; 12.345 microVolts on Microphone
  SB16.ADC     G:L123.45   ; 123.45 Volts on Left Line
  SB16.ADC     G:r10       ; 10 Volts on Right Line
  SB16.ADC     G:C10m      ; 10 milliVolts on Left CD
  SB16.ADC     G:d0f999    ; 0.999 femtoVolts on Right CD

You may use separate G: parameters for as many of the inputs as desired. The rest will remain at default values, which are 21.25 mV for the Mic input and 1.712 V for all others.

The values entered this way have no effect on which input is selected at startup... that's always Left Line unless set otherwise via the C: Channel parameter.

Note that the G:An option to change All inputs (except Mic) is handy for compensation of undocumented sensitivity differences of Sound Blaster models. The Calibration section describes how to measure the sensitivity of your particular board.


This SB16 driver is calibrated to report accurate sample rates on both normal and CT417x ViBRA / WavEffects models. If your board differs from this calibration by a small percentage (such as if your crystal reference time-base is out of spec), you can modify the values reported to Daqarta.

You will need to make an accurate measurement of the actual sample rate for a given setting. This requires a frequency counter that you trust more than the crystal on the board. Ideally, it should have a "period" mode to measure the duration of a single cycle, since this typically gives higher resolution with audio frequencies.

The basic idea is to use STIM3 to generate a pure sine wave whose frequency is locked to the sample rate. Measuring the sine wave frequency then allows you to calculate the actual sample rate.

Connect the Right output (Line or Spkr) to the input of the frequency counter, and also to the Line input for monitoring. If you use the Right Line input, make sure it's selected on the Board menu. Move down to the Stimulus item in that menu and toggle it to StGen if it isn't already. Set the Right Output to -18 dB or so initially, so the monitored level is not too big for the input.

Using the X-axis menu (CTRL-X), set the sample rate to 44100 Hz for a normal SB16/32/64 or to 48000 Hz for a CT417x ViBRA / WavEffects model. These are the reference values for the respective time-bases.

Hit the R-key to go to RTime operation, which is needed to produce continuous tones.

Use CTRL-G to bring up the main STIM3 control menu, and toggle Master to On. Move down to DAC 1 (not DAC 0) and toggle that On as well. You should see a default 100 Hz waveform on the trace. Hit the F-key and you will note that it does not fall exactly on a spectral line... it's spread out with "skirts". Hit the X-key to Xpand the trace for a closer view.

Use CTRL-PgUp to go to the STIM3 Misc menu, then move down to the Step Hz item, which will show Off. Hit ENTER 3 times until the item title changes to Step N and the item changes to Tone. Now move down to the step value below and enter 2. This will force output frequencies to move in steps of 2 spectral lines, assuming 1024 point FFTs, or single lines for the default 512 point FFTs which we are assuming here.

Now use CTRL-PgUp to go back to the main STIM3 control menu, and go to DAC 1 Adjust and hit ENTER to bring up the submenu. Change Freq and the spectrum will instantly lock to a single line. Set Freq to 1000 Hz or so and note the spectral line number, not counting the 0th (DC). For example, with a 44100 Hz sample rate and 512 point FFT, the 12th line will be at

 (12 / 512) × 44100 =  1033.59375 Hz

Now read the period from the counter, and take the reciprocal to find the true frequency. To find the true sample rate, just plug back into the above relationship in reverse:

 Sample Rate = Frequency  ×  (512 / 12)

Or just use the period directly:

 Sample Rate = (512 / 12) / Period

The sample rate step size is found by dividing the true sample rate by the step number, which is 248 if you had set 44100 Hz on a normal board, or 270 if you had set 48000 Hz on CT417x ViBRA / WavEffects board. Normal (default) step sizes are thus 44100 / 248 = 177.8225807 or 48000 / 270 = 177.777778, respectively. All actual sample rates are multiples of this step size, from a factor of 28 at the lowest sample rate, to a maximum of 255. The CT417x models are an exception, however, in that the actual factors run from 28 to 254, then jump to 270 instead of 255 to get the maximum rate of 48000 Hz. This driver detects CT417x models and automatically adjusts the step size and handles the 48000 Hz jump. If your measurements indicate a need to change the step size, you must first multiply it by 100 to get to the resolution that is used internally. Enter the factor on the SB16.ADC configuration line using the G: parameter with an S prefix on the value, as in:

 SB16.ADC    G:s17782.25807

The default values are 17782.25807 and 17777.7778 respectively. The parameter input system can only handle values of 65535 or less in the integer or fraction portions, so you can't extend the decimal places beyond these.

Also, the step value is specifically limited to a range from 16000 to 20000, which amounts to +/- 10% from the nominal value. In reality, it is rare for a crystal-controlled system to be off by even 1% unless the crystal is defective.

(Note that early versions of this driver used an equivalent factor of 17800.00000, so the indicated sample rates were about 0.10% higher than actual.)


This is a powerful option that gives digital I/O capabilities to your SB16 board by utilizing a conventional printer port. If you specify L:1 on the configuration line, for example, LPT1 will be used to provide optional external triggering, stimulus pulse output, Averager remote control, and DDisk remote control.

The DB25 pin assignments for these (all standard TTL) are:

 Stimulus Pulse       OUT      2
 DDisk Remote         IN      12
 Averager Remote      IN      13
 External Trigger     IN      15

If the LPT number is not in the range of 1 to 4, Daqarta will exit immediately with:

    'LPT value out of range.'

Most computer systems come with a single standard printer port, and if you need more than that you will have to install a separate board. All DOS systems can support ports LPT1 through LPT3 "naturally", without special software. The system BIOS keeps a record of the location of each LPT that it recognizes, and that record is consulted to validate the LPT value that you use here. If there is no entry for the LPT number you give (L:3 in this example), Daqarta exits with a message like:

 'LPT3 not recognized by BIOS.'
 'BIOS recognizes only LPT1 to LPT2.'
where the message will reflect actual LPT availability.

Problems may be due to adding a new printer port board and getting the jumpers or switches wrong. Most boards allow designation as LPT1 or LPT2. If you need to add LPT3, be sure the board allows it before you buy. Some boards allow LPT4 use, but not all systems support this. For example, IBM PS/2 systems use the LPT4 location in the BIOS data area for other purposes.

You can use the LTEST.EXE utility supplied with Daqarta to see the port addresses corresponding to each LPT, as read from the BIOS data area just like this driver does. A typical display would be:

       Printer Port assignments:
          LPT1: 0378h
          LPT2: 0000h
          LPT3: 0000h
          LPT4: 9FC0h
In this example, only LPT1 is installed, at address 378h. LPT2 and LPT3 are available, but LPT4 is clearly in use for something else. LPT ports are always assigned consecutively by the BIOS, so this can't be a hidden port. It's also beyond the highest possible port address of 3FFh.

Even if LTEST shows that the LPT4 location is available to install a new port, you may need to run special software (supplied with your port board) to make use of it... not all BIOSes will assign this automatically on start-up.


This parameter relates to the absolute polarity of the ADC and DAC data. The original SB16 boards invert both of these: Positive input voltages are converted by the ADC to negative values, and negative values are converted by the DACs to positive output voltages. Certain other models don't invert, or only invert the DAC outputs, etc.

To insure that the displayed trace polarity matches the true input polarity, and that the true output polarity matches the specified stimulus waveform, Daqarta must know about any signal inversions so it can compensate.

The SB16.ADC driver assumes an original SB16 board, with both ADC and DAC inversions. If your board is different, use the N: parameter to set the correct polarity.

 SB16.ADC    N:B    ;Corrects Both ADC and DAC
 SB16.ADC    N:A    ;Corrects ADC polarity only
 SB16.ADC    N:D    ;Corrects DAC polarity only
 SB16.ADC    N:M    ;Corrects Mic input polarity only

Most boards will need N:B if they need any correction at all. Note that "correction" means that your board does NOT invert polarities like the original SB16 does, meaning the inputs and/or outputs will seem to be inverted since Daqarta is correcting for an inversion that is not actually present.

However, at least one CT4171 ViBRA model inverts the DACs but not the ADC, so you will need to use N:A to correct only the ADC.

Further, some models may treat the Mic input differently than the Line and CD inputs. If this is the case, apply any needed overall correction as above, then add N:M to correct the Mic.

Unfortunately, Creative Labs does not document which of their numerous SB16, SB32 and SB64 models invert data and which do not. Even if they did, the model number can only be found by looking at the board itself, not from any software tests... and there are more than 50 models supported by this driver. So the only way to be sure is to test this for yourself.

This is easy if you have access to a laboratory function generator with adjustable waveform symmetry, and a scope to see what the true waveform looks like: You just create a skewed waveform and see if the Daqarta trace is skewed the same as the scope trace, or create a tone burst with a known initial polarity and see if the burst starts the same way on the Daqarta trace. If not, use the N: parameter.

If you don't have such equipment handy, you can improvise. An ordinary signal diode will rectify a sine wave to produce a waveform with easily-identified polarity. (Be sure to use the diode orientation shown. The bar on the diode symbol corresponds to the band on the actual device, which will be the positive output.)

     Sine  >------>|------.------> Rectified Sine
      In                  |        to SB16 Line In
      Gnd  >--------------^------> Gnd

You can use the SB16 to create the sine, either from the OPL3 synthesizer or the STIM3 Stimulus Generator. The half-wave rectified sine wave thus produced will have the positive peaks from the original wave, but the negative portions of the sine will be clipped off. However, since the SB16 inputs are AC-coupled, the waveform shown by Daqarta will still be approximately centered about zero. Instead, look for the rounded sine wave peaks: If they are on top, everything is OK. Otherwise, you need to use the N: parameter.

Using the optional LPT Pulse output is even simpler, since unlike DAC outputs there ARE standard polarities for printers. This test also allows you to check trigger alignment at the same time (see the Q: parameter section).

Set the OPL3 Left Synth output to Burst mode using the default values for Freq, Delay, Rise, etc. The Master Outputs must be On, but you are not really going to use the synth output itself for this test, just its timing. Instead, connect the Pulse output from the LPT port to the Left Line input. Go to the Source item in the Trigger control menu and set it to Pulse, and leave the Slope set to the default Pos position.

You should see a large positive pulse at the beginning of the trace. This pulse will probably be clipped, since it is larger than the input range of the Sound Blaster even on Range 0, but the polarity should be obvious. If the trace shows a negative pulse, you need to use the N: parameter.

If you determine from these tests that the N: parameter is required, use the N:B form since the ADC polarity and the DAC polarity will be the same. Only if you need to produce inverted stimuli for some special purpose would you need to use the N:A form. (You would use N:D if you want inverted stimuli but your ADC polarity is already correct.)

Once the ADC polarity is correct, the true DAC polarity will be seen simply by connecting the board output to the input with STIM3 active. The actual trace should look like the small Stimulus Display which is normally superimposed over the upper part of the waveform when the STIM3 control menu is visible (CTRL-G).

O:V OPL3 OUTPUT GAIN (CT417x only):

CT417x ViBRA / WavEffects models have an undocumented gain switch that can provide a +6 dB boost to the output. If you give the O:V parameter, this gain will be applied to the OPL3 synth outputs only. Even with this activated, the actual OPL3 output level on these models is still 6 dB lower than the DAC outputs.

This has no effect upon the values reported by the Synth Level controls, which are relative to maximum output. Only the actual output level is affected.

Since this feature is undocumented by Creative Labs, there is no assurance that it will be present on all CT417x models, especially in the future.

If you give this parameter on any other board, it will simply be ignored.


Beginning with DSP version 4.13, 16-bit Sound Blasters use an extended internal buffer for incoming data, such that ADC values are reported 8 samples later than in earlier versions. This driver compensates for that automatically. However, if a still longer buffer is used on future models, the Q: parameter allows you to supply the correct compensation.

To determine if this parameter is required, you need to produce an input with a sharp leading edge. The LPT Pulse output discussed in the N: parameter polarity test section can serve for this, or you can use the STIM3 Stimulus Generator in full Duplex mode.

Here is a typical DAC setup for STIM3:

 Freq = 200 Hz
 Phase = 90 degrees (start at sine peak)
 Start = 0
 Rise = 0
 Sustain = 0
 Fall = 512
 Level = 100%

This will produce a sharp positive edge and a decaying sine wave. The wave decays to zero so that there is no transient when it goes off, which avoids confusion with the onset.

If the leading edge does not start at the trigger point (at the left end of the trace when Trigger Delay = 0), then you must determine how many samples of correction are required. Note that you may need to use a small negative trigger delay to be sure you are actually seeing the leading edge.

Use the Xpand option and Line0 display to see individual samples, and count from the trigger point to the start of the transient. The trace cursor only moves among actual samples, so you can count the number of key hits it takes to move it between these points.

This is the value that you must add to the default Q: value to get the proper Q: value. The default is 8 for DSP versions 4.13 and above, or 0 for earlier versions. You can read the DSP version from the board information summary available via the ALT-H Plug-In Help system.

CT417x ViBRA / WavEffects models are exceptions, and use a default of Q:0 even with DSP versions above 4.13. Note that these models have a lag of about 200 microseconds on OPL3 synthesizer Burst or Gap onsets, which is independent of the Q: setting.


This R: parameter allows you to preset the Range of the input. You can also change it at any time during operation via the Range control of the Board menu.

Note that the R: parameter (or Range control) changes the actual input sensitivity like a level control, whereas the G: parameter simply changes the calibration factor so that different Y-axis values are shown without affecting the actual size of the signal.

Ranges may be preset to any value between 0 and 13. For example, set range 9 with:

    SB16.ADC     R:9


When full duplex mode is available (STIM3 Stimulus Generator is loaded and D: and H: DMA channels are available), then the Stimulus source control in the main Board control menu can be toggled between Synth (the built-in OPL3 synthesizer) and StGen (the STIM3 system) to provide stimulus outputs.

The S: parameter allows you to preset the Stimulus source. The default is S:0 for Synth, but if you set S:1 (or any non-zero value) the initial board menu will show StGen for this item and the Synth main output controls will be replaced by those for the Left and Right DAC Outputs, plus a DAC Bits display.


The official Creative Labs developer's kit indicates that the SB16 sample rate may be set to any integer value between 5000 and 45000 Hz inclusive. In reality, the true sample rates can be set only in 177.82258 Hz steps from 4979 to 45345. To insure accuracy, this driver only sets and reports the true values.

However, an apparent flaw in early DSP designs results in sample rates that are wildly different from the settings at 5868, 22939, 25784, and 28629 Hz. This driver normally does not allow you to set these... it selects the nearest correct value instead.

For DSP versions 4.13 and above, there is no problem at these frequencies and this driver automatically enables them. You can manually force them to be eXcluded via X:1 or enabled by X:0 on the configuration line.

Note that CT417x ViBRA / WavEffects models move in steps that are slightly smaller (177.77779 Hz) and have a top step of 48000 Hz, but do not exhibit the above sample rate problem.


Questions? Comments? Contact us!

We respond to ALL inquiries, typically within 24 hrs.
25 Years of Innovative Instrumentation
© Copyright 1999 - 2006 by Interstellar Research