SB8 SOUND BLASTER DRIVERFor 8-bit mono Sound Blaster and compatibles (DSP version 2.xx)
Last update 5-22-99
INTRODUCTION:This SB8.ADC driver supports 8-bit Sound Blaster versions 2.00 and 2.xx. Version 2.00 boards have a maximum sample rate of 11.905 kHz, while the later 2.xx models can go to 16.949 kHz. Attempting to set higher sample rates will result in an Alert, with the actual rate set to the limit for your board.Note that since both board limits are less than the default of 20 kHz that Daqarta tries to set initially, you will hear two Alerts on start-up. This is perfectly normal for this board, and simply means that the initial sample rate is less than the standard default. Both models have a minimum sample rate of 3906 Hz. Daqarta will read your BLASTER environment string to determine the base address and IRQ values for your board, or you can specify these via the DQA.CFG parameters on the SBPRO.ADC line of the DQA.CFG file. You can tell which board Daqarta has detected, as well as other pertinent information, by looking at the single page summary via the ALT-H key. That will bring up the Plug-In Help list of installed drivers, of which the ADC driver will be the first one. Hit ENTER with the Help cursor on that line and you can see the board information summary. The DSP Version is shown near the top of the page.
CONFIGURATION PARAMETERS:PARAMETER OVERVIEW:This driver allows you to specify certain parameters on the SB8.ADC line, which will be the second line of the DQA.CFG file. Each parameter is given as a letter and colon, followed immediately by a value. Use a space to separate parameters. For example:SB8.ADC A:h240 I:7The order of the parameters is not important. Daqarta will read the BLASTER environment string, if it is present, and use that to set the the Address and IRQ. Setting an A: or I: value on the SB8.ADC line will cause that value to be used in preference to the equivalent BLASTER value. 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. Daqarta will exit with an error message if it finds a problem in the SB8.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. Daqarta ignores any non-Daqarta drivers that may have been installed for your board, whether Windows or DOS.
A: ADDRESS:Use this to tell Daqarta the base I/O address for your board. This should match the value selected by the jumpers on the card, typically hexadecimal 220 or 240 on a true Creative Labs Sound Blaster, but possibly different on clones.You only need to give the A: parameter if the BLASTER string in your DOS environment is not correct. This normally appears as a SET BLASTER= line in AUTOEXEC.BAT. (You can view all the strings in the environment by entering SET at the DOS prompt.) 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. There is also the possibility that the jumpers on the card don't match the BLASTER value. 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: SB8.ADC A:h240Compare this to the BLASTER format, which would be just A240. The default address for SB8.ADC is hex 220, which will be used if there is no BLASTER string and no A: parameter. The value you enter is not validated against any standard list, allowing other boards with different address options to be used. Daqarta then checks 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 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 that 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 2.xx, and if anything else is found Daqarta will exit with a message telling you what was found and what was needed, as in: Board found with DSP version 03.02. Requires Sound Blaster board or equivalent, version 2.xx. 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 only tells Daqarta which sensitivity to assume... it does NOT actually switch between inputs, which must be done manually. The C: parameter requires either a number or a letter (case-insensitive):Number OR Letter Mic C:0 C:M Line R C:1 C:R Line L C:2 C:LFor example, to select the Mic input as the default, you could use either: SB8.ADC C:0 or SB8.ADC C:MChannel numbers are reported in the Daqarta title line as "Ch0" through "Ch2" instead of "M" or "Mic", etc, for file compatibility between different boards. These values are also the number of additional ENTER-key presses you would use to set a desired input via a Key Macro after using KeyOn, which forces the Mic input on the first ENTER when the cursor is at the Input item. The normal default value is the Line L input, which is Ch2.
F: HELP FILE OMIT: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.
G: GAIN CALIBRATION: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, assumed to be maximum... below the AGC threshold. Instead, the G: parameter allows you to compensate for externally-applied Gain from a preamp or attenuator, for example.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 scale 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, SB8.ADC G:M12.34specifies that the Microphone input has a sensitivity of 12.34 Volts full-scale. See the Calibration section for details on determining the proper G: value. The input letter codes (case-insensitive) are: M Microphone L Left Line R Right LineThese 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: SB8.ADC G:m12u345 ; 12.345 microVolts on Microphone SB8.ADC G:L123.45 ; 123.45 Volts on Left Line SB8.ADC G:r10 ; 10 Volts on Right Line You may use separate G: parameters for as many of the inputs as desired. The rest will remain at default values: Mic 5.0948 mV Right Line 389 mV Left Line 389 mV 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.
I: IRQ:This SB8 driver uses DMA for data acquisition. The DMA level on the Sound Blaster is hard-wired to level 1, and thus does not need to be given as a parameter. However, DMA operation also generates interrupts, so the I: parameter specifies the Interrupt Request level (IRQ) used when servicing them.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. The Sound Blaster allows selection of IRQ 2, 3, 5, or 7 via a jumper block on the board. To tell Daqarta which one you have set, use the I: parameter as in: SB8.ADC I:7IRQ 7 is the default. IRQ 2 is really the same as IRQ 9 on AT-class machines, and Daqarta will accept I:9 instead of I:2. Usually, Daqarta can read the I value directly from your BLASTER environment. Although forcing a value via the D: parameter on the SB8.ADC line will overrule the BLASTER setting, it does not actually change the value used by the card, which is set via the jumpers. Note that IRQ 2 uses the second interrupt controller on AT-class machines (286 processor and above), and hence uses a second End Of Interrupt (EOI) command that is not needed when using 3, 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. (IRQ 3 is usually unavailable these machines.)
L: LPT PRINTER PORT I/O:This is a powerful option that gives digital I/O capabilities to your SB8 board by utilizing a conventional printer port. If you specify L:1 on the ADC 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: 9FC0hIn 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.
INPUT CONTROL:INPUT SOURCE:This allows selection of the active input, which can also be pre-set via the C: parameter on the second (ADC) line of the configuration file. Daqarta refers to each input as a "Channel" on the main title line:Mic Ch0 Line R Ch1 Line L CH2The power-on default is 'Line L' or Ch2. The selection advances by one for each ENTER at the Input item. If you wish to create a Key Macro to set a certain channel, include a KeyOn before the first ENTER to force Mic, then an additional ENTER for Line R or two for Line L.
NOTE: The Line input is the upper jack on the edge connector, and the one below it is the Mic input. For "tower" cases, the "top" of the edge connector is the end opposite the multi-pin MIDI connector. If you plug one of the standard cables that come with many boards into the Line input, the red phono connector is the Line Right input... R for Red and Right. The white phono is then the Line Left input. If you plug the same cable into the Mic input instead, only the white phono connector is the active Mic input... the red one is not used. Since the Mic and both Line inputs are combined by the board, you should connect only one at a time or take steps to insure that only one will have a signal present. If you want to keep both connectors plugged into the board and wire the cables to a more accessible connector panel, you should provide a selector switch to short out the unused inputs to prevent noise pickup.
SENSITIVITY and AGC OPERATION:Both Mic and Line inputs have Automatic Gain Control (AGC) that can't be disabled. If an input signal rises above the AGC action threshold level, the AGC tries to reduce the signal down to the AGC level. When this happens, there is thus no effective sensitivity calibration. This driver assumes that input signals will be kept below the AGC action threshold.
CAUTION: AGC THRESHOLD TABLE: RMS 0-peak peak-peak Mic.......... 2.3 mV 3.25 mV 6.50 mV Line......... 200 283 566 The AGC action is not instantaneous. If the level suddenly increases after a long period at a low level, the AGC will take about 15 or 20 msec to reduce the gain. The initial part of the signal will thus be grossly distorted until the AGC catches up. The "release" from AGC action is much slower. If you want to see the AGC action for yourself, connect one of the synthesizer outputs back to the Mic input. Set up a tone burst that lasts most of the trace... say 400 samples if you are using N = 512 samples. Set the thumbwheel so that the trace is as large as it can go without distortion. Now adjust the Level control and watch what happens. If you start off at a high level and suddenly reduce it, the trace will reduce and then slowly grow back up to the original size. Keep reducing the level until you no longer see the growth action. You might suppose that this is the AGC action threshold, but in reality the repeating tone bursts keep nudging the AGC so that it never really reaches maximum gain. Next, hit the S-key to activate the Single Sweep option. The trace should look almost identical. After the sweep, the system will be in Pause mode, so there will be no tone bursts going to the input and the AGC will start to increase its gain as much as possible in a futile attempt to maintain its target level. Wait about 10 seconds and take another Single Sweep. Now you should see the first part of the tone burst at a higher level, maybe even distorted, then smoothly fading down to the prior level. The action threshold is the level below which there is no change between a live trace and a sweep taken after many seconds, after the AGC has supplied all the gain that it can. If, under some unusual circumstance you need to actually use the AGC to maintain a certain level when the signal varies, there is a way that may allow a measurement or at least an estimate of the true input signal level: If there is some low-level component of the signal that is NOT variable, such as background noise, it will also be affected by the AGC as it operates on the higher-level signal. So if the "constant" background appears larger, it means more gain has been used to bring the overall signal to the AGC level. You can thus use the background as an indication of the AGC gain. If you are going to set up an experiment specifically to use this idea, you could deliberately add a low level tone for this purpose. The tone should stand out clearly on a spectrum display.
INPUT CALIBRATION:Note that you can use the G: parameter to calibrate each of the input sources for different external Gains.The simplest way to do this is to apply a calibration signal of known amplitude to the desired input on the desired range. A sine wave of 500 to 1000 Hz is best, since you can use FFT mode to view its magnitude directly on a cursor readout. (Very high or low frequencies run the risk of being unduly affected by the frequency response of the board.) You can use the built-in synthesizer to generate the sine wave, and measure its output with an external voltmeter that is accurate enough to serve as the calibration reference. Adjust the sine frequency or the sample rate to get minimum spectral leakage "skirts". If you are simultaneously reading the sine amplitude with an external AC voltmeter, use the Daqarta RMS magnitude mode for direct comparison without calculations. Most meters are calibrated to read in RMS Volts with a sine wave input, even if they do not use true RMS for correct results with complex waveforms. (This method only works with sine waves. If you must use a different waveform, you will need to measure peak-to-peak or zero-to-peak values while viewing the waveform directly. You can use the ZeroP option to read zero-to-peak from a single cursor readout without subtraction. Of course, you will also need a way to know the peak value by independent means. Remember that there may be waveform changes due to the frequency response of the board.) Now divide the true (voltmeter) value by the cursor readout to find the factor that must be multiplied by the full-scale internal default values to make the readout match the meter: Mic 5.0948 mV Right Line 389 mV Left Line 389 mVThe product is the value to set via the G: parameter.
INPUT FREQUENCY RESPONSE:All inputs are AC-coupled, which means they do not pass DC levels. The following measurements were made at levels below the AGC action threshold, normalized to the response peak at 2000 Hz:Input Line Mic Freq Response Response 10 Hz -2.12 dB -1.89 dB 20 -0.77 -0.66 50 -0.30 -0.21 100 -0.20 -0.10 200 -0.17 -0.09 500 -0.08 -0.04 1000 -0.08 -0.01 2000 0.00 (REF) 0.00 (REF) 5000 -2.95 -3.21 6000 -5.50 -5.61 7000 -8.28 -8.32 8000 -10.98 -11.25Above its action threshold, the AGC circuit works to maintain a constant signal level to the board even in the event of falling frequency response. This makes it difficult to measure the true frequency response at high levels, but it is most likely the same. Of course, you will probably want to avoid levels where the AGC is working, since then there is no effective sensitivity calibration.
MEASURING INPUT FREQUENCY RESPONSE:You will need a separate "known flat" sine wave oscillator, since the OPL3 synthesizer has its own response fall-off at low and high frequencies. Use the Y-log (Power Spectrum) mode to read dB directly. Set the Spectrum Averager to Peak mode, and set Sweeps to Continuous (1 or less).For best frequency resolution, you may want to measure the low-frequency response separately. Use the lowest sample rate the board allows (3906 Hz) for low frequencies. Start with the input frequency at about 500 Hz. Now slowly adjust it down to zero and a low-frequency response curve will appear. If you move the frequency too quickly, you will get dips in the response curve. Just go back and fill them in by moving more slowly... the ability to do this is one of the advantages of Peak mode. To plot the high frequency response, simply repeat the above frequency adjustment for the higher input frequencies. Be sure to set a higher sample rate after the above tests... select a rate typical of your anticipated use.
INPUT IMPEDANCE:Mic.......... 460 ohms CD........... 6800 ohms Line......... 30000 ohms |