SBPro SOUND BLASTER DRIVERFor 8-bit Sound Blaster Pro, Pro 2, and compatibles
Last update 5-22-99.
INTRODUCTION:This SBPRO.ADC driver supports the Sound Blaster Pro and the Sound Blaster Pro 2, and any hardware compatibles. The newer Pro 2 differs from the Pro in that it has a single OPL3 stereo synthesizer chip, whereas the original Pro had dual OPL2 mono chips. This driver supports both versions, but there are a few differences. The OPL3 allows redirection of the two output channels, so you can use the Swap and Output Switching options with the Pro 2. With the Pro, the right and left synthesizer channels are hard-wired to the right and left stereo outputs, so these options will not appear on the main board menu.However, the OPL3 is not otherwise identical to two OPL2s. Each OPL2 offers the possiblity of 11 simultaneous voices, whereas the OPL3 supports only 20 voices total... but it also allows a special enhanced mode giving just 6 voices that can be much more complex. This driver makes no use of these complex voices, since it only generates pure tones or noise. It turns out that the voices that the OPL3 sacrificed to gain the enhanced mode were the same ones needed to produce noise from the right channel. So while the Pro can produce noise on both outputs, the Pro 2 can create it only from the left channel... but with Output Switching you can send it to either output. Either board can produce noise on one output and a tone on the other, or a different tone on each output. The difference is that the Pro can produce noise bursts of different durations on each channel, or a noise burst on one and a noise gap on the other, while the Pro 2 can not... though it can send the SAME noise to both outputs. Daqarta will read your BLASTER environment string to determine the base address, IRQ, and DMA 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 about DMA and IRQ settings, etc, 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. On the line that reports the DSP version number will also appear a "Sound Blaster Pro" or "Sound Blaster Pro 2" label. Throughout this document, "Sound Blaster Pro" will be used to refer to either the Pro or the Pro 2 unless specifically noted otherwise. Similarly, "OPL3" will be used to include both the OPL3 and dual OPL2s.
CONFIGURATION PARAMETERS:
PARAMETER OVERVIEW:This driver allows you to specify certain parameters on the SBPRO.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:SBPRO.ADC A:h240 D:1 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, IRQ, and DMA. Setting an A:, I:, or D: value on the SBPRO.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 SBPRO.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 SBPro 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 Pro, 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: SBPRO.ADC A:h240Compare this to the BLASTER format, which would be just A240. The default address for SBPRO.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 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 3.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 02.10. Requires Sound Blaster Pro board or equivalent, version 3.xx or above. 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:LAs 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: SBPRO.ADC C:0 or SBPRO.ADC C:MChannel 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:This driver uses DMA operation for all data acquisition. The SBPro allows use of DMA levels 0, 1, or 3 by setting a pair of jumpers on the board for the corresponding DRQ and DACK numbers. (Consult the "Getting Started" manual that came with your board.) The default value is DMA 1, so if you are using another value you must tell the driver via the D: parameter, as in:SBPRO.ADC D:3 Usually, Daqarta can read the D value directly from your BLASTER environment. Note that forcing a value via the D: parameter on the SBPRO.ADC line will overrule the BLASTER setting, but it does not actually change the value used by the card, which must be done via jumpers.
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, which has been preset to maximum. 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, SBPRO.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 Line C Left CD D Right CDAs 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: SBPRO.ADC G:m12u345 ; 12.345 microVolts on Microphone SBPRO.ADC G:L123.45 ; 123.45 Volts on Left Line SBPRO.ADC G:r10 ; 10 Volts on Right Line SBPRO.ADC G:C10m ; 10 milliVolts on Left CD SBPRO.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: Mic 4.6095 mV CD 0.7565 V Line 2.0604 V 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: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.The Sound Blaster Pro allows selection of IRQ 2, 5, 7, or 10 via a jumper block on the board. To tell Daqarta which one you have set, use the I: parameter as in: SBPRO.ADC I:7IRQ 7 is the default. IRQ 2 is really the same as IRQ 9, 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 SBPRO.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 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.
L: LPT PRINTER PORT I/O:This is a powerful option that gives digital I/O capabilities to your SBPRO 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 CONTROLS: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 CD R Ch1 CD L Ch2 Line R Ch3 Line L Ch4The power-on default is 'Line L' or Ch4. 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. The CD inputs are on a small white connector on the board itself... they don't appear on the rear panel. These "extra" inputs are handy for rapid switching between different signals. One excellent use is to monitor the direct stimulus (such as from the built-in synthesizer) that you are using to drive your experiment. This allows you to verify timing, waveform, spectrum, rise/fall shapes, and so on. Another advantage of the CD-ROM inputs is much better frequency response below 50 Hz compared to the Line inputs. You can buy a CD-ROM cable for a few dollars and snip off the CD connector, leaving only the end that plugs in to the SBPRO. Then wire the free end to your choice of connectors mounted on a spare card-slot cover plate. (The SBPRO connector pins are spaced on 2mm centers, so they are not compatible with that pile of old standard 0.1 inch connectors in your junk box!)
SENSITIVITY:This driver is pre-set to the maximum sensitivity for each Input source. Although the board allows other settings, it turns out that they are of no value here: They are less sensitive only in the fact that the recorded signal is lower, but they don't allow correspondingly larger input signals. Even at the most sensitive settings used here, the board's input or mixer circuits overload before the full-scale voltage is reached. When this happens, the top and/or bottom of the waveform will become flattened or "clipped" to the limiting value. This produces distortion, mostly odd harmonics of the input fundamental frequency if the signal is a symmetrical waveform.If the signal is much larger than this limit, the ADC itself can be overdriven. In this case, the distortion is much more spectacular, since inputs that exceed the ADC full-scale value will "roll over" and reappear as the opposite polarity. This will totally trash your signal into spiky, incoherent garbage!
OVERLOAD THRESHOLD TABLE:RMS 0-peak peak-peak Mic.......... 600 mV 849 mV 1697 mV CD........... 400 567 1131 Line......... 1100 1556 3111NOTE: The Mic overload point is given here for reference only. You will normally want to keep signals below the AGC action threshold of 2.7 mV RMS to insure calibration.
MEASURING OVERLOAD LIMITS:The most sensitive test to determine the overload point on any given Input is to use a low-distortion sine wave as the input signal. The built-in synthesizer is not really "low distortion", and its software Level control resolution is only 1 dB, but this is probably adequate for most purposes.Adjust the signal frequency to about 500 Hz and set the level for a mid-range waveform that is not obviously distorted. Observe the power spectrum and fine-tune the signal frequency for a single line spectrum without "skirts". Start with a sample rate of around 20 kHz, but if your signal source doesn't allow fine adjustment you can tweak the sample rate to get the single line spectrum. Now slowly raise the signal level until you see a forest of lines arise from the spectrum noise floor. This is the onset of distortion. To increase your ability to determine the exact threshold as you raise and lower the level slightly, use a small amount of signal averaging, say 16 or 32 sweeps, in the Exponential mode. This will reduce the noise floor jitter and make the onset of distortion stand out more clearly, although you must adjust levels slowly to allow time for the exponential decay of the averaging. After you find the distortion threshold in this manner, it is quite revealing to see how much higher you must raise the input level before you can detect any distortion when viewing only the waveform display.
MICROPHONE SENSITIVITY AND AGC OPERATION:The Mic input has 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 that level. When this happens, there is thus no effective sensitivity calibration. The calibration factor for the Mic input assumes that input signals will be kept below the AGC action threshold.
AGC THRESHOLD TABLE: RMS 0-peak peak-peak 2.7 mV 3.8 mV 7.6 mV The AGC can handle inputs up to 600 mV RMS, above which serious overload distortion begins. 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 on that channel that lasts most of the trace... say 400 samples if you are using N = 512 samples. Set the thumbwheel to maximum (assuming you have no external amplifier). 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 4.6095 mV CD 0.7565 V Line 2.0604 VThe 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 CD-ROM input response is flat within 0.1 dB down to at least 10 Hz. The Line and Mic inputs are this flat down to about 50 Hz, and down 2 dB at 10 Hz.On the high frequency end, both the Line and CD inputs have responses that start to fall gently after about 5 kHz (where they are about 0.3 dB down), reaching -3 dB at about 16 kHz and -4 dB at 20 kHz. The Mic response is actually better, only 0.5 dB down at 20 kHz. Mic measurements were made at an input level below the AGC action threshold to prevent artificial flattening of the response.
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. Note that the response will be dependent upon the input filter setting, if that is active.
INPUT IMPEDANCE:Mic.......... 460 ohms CD........... 6800 ohms Line......... 30000 ohms
INPUT FILTER:This is a low-pass filter which can be used to reduce aliasing if you must use a sample rate that is less than twice the highest frequency present in your signal. Of course, you can also use it simply to reduce high-frequency noise in your signals even if aliasing is not a problem. Select from cutoff frequencies of 3200 Hz, 8800 Hz, or Off by repeated hits of the ENTER key on this item.
|