
                         Sound Blaster(tm) Driver
                       (Copyright 1991, Brian Smith)


REQUIREMENTS

This driver and the associated user programs require a 386/486 system
running System V 3.2 Unix.  It has been tested on ISC Unix versions
2.0.2 through 2.2.1.  I believe it will work correctly on Esix, Intel,
and AT&T Unix.  SCO is a mystery to me (as well as many others).  I do
not believe it will work in SysV 4.0 and above, but the modifications
should be fairly minimal.  Remember, though, THERE IS NO WARRANTY.
 

GENERAL INFORMATION

This driver is for the Sound Blaster sound card designed by Creative
Labs, Incorporated.  The Sound Blaster is a sound card for the
IBM-PC(tm) type I/O bus.  The card is capable of sampling sound from a
microphone jack from 4KHz to 23KHz (or 24KHz, depending upon which
portion of the manual you believe) at 8 raw bits of resolution.  It is
also capable of playing samples at speeds from 4KHz up to 12KHz.  The
board can play raw 8 bit samples, or 2 bit, 2.6 bit, or 4 bit ADPCM
packed samples.  ADCPM is a lossy method of data compression.  The
sampling and output may be directly driven by the CPU, or it may be
driven by DMA.  The card is also capable of playing music through an
on-board FM synthesizer chip.  The chip may play 9 simultaneous
instruments, or it can play 6 simultaneous voices with 5 additional
rhythm instruments.  In addition, the board (but NOT my driver) also
supports the addition of 2 C/MS chips. For more information, read the
advertising blurb, errr...  manual which comes with the Sound Blaster.

The driver is capable of utilizing only a subset of the capabilities
of the Sound Blaster card.  The driver is accessed through three
device nodes.

The /dev/sbdsp node accesses the DSP chip which controls sampling and
sample playback.  Only 8-bit sound is supported thus far.  The driver
utilizes DMA, and therefore is very unobtrusive to the system load.
The ls utility is harder upon the system.  Read(2) and write(2) upon
/dev/sbdsp sample sound and play back sound samples, respectively.
Several ioctl(2)'s control sampling/playback speed, resets, etc... 
The play_snd utility demonstrates the use of the /dev/sbdsp node.

The /dev/sbfm node accesses the FM chips.  The only access to the FM
chips are through ioctl(2)'s.  The play_cmf utility demonstrates the
use of the FM chips by (mostly) interpreting and playing CMF files.
The various options controlling the voices can be dumped from a CMF
file by the get_instruments utility.  Those familiar with synthesizers
can then learn how to create their own instruments.  I can't provide
direct documentation, as I believe that would be a violation of
Creative Lab's copyrights.  Those having questions, send me e-mail.  I
think it would be OK to answer questions.

The /dev/sbcms node accesses absolutely nothing.  I do not have the
C/MS chips with which to experiment.

This driver is merely the rough outlines of what it could be.  Support
could be added for oodles of features, like efficiency improvements, and
ADCPM interpretion for the /dev/sbdsp node.  If you wish to add to this
driver, please be my guest (after reading the license file).  When you
have patches, send those to me.  I will then integrate, do rudimentary
testing, and send the patches to Usenet.  That way, there won't be
billions of versions of this driver to contend with.

I am not requiring donations to my, no doubt worthy cause, however,
they are willingly accepted. :-)  They will help me in future
projects, and if there are enough requests (loudness does not count),
I will continue work on this driver and write more software to use
it.
