blob: 1357cc3e6084b9c746fc32430c508e35498df1d9 [file] [log] [blame]
Release notes for the Linux Sound Driver 2.1
-----------------------------------------------
This version is just version 2.0 with some kind of SB16
support. The SB16 works now in 8 bit mono mode up to speed
44100 Hz. Stereo recording and playback is not supported with
the SB16 yet. Also the 16 bit mode is missing.
You will need the snd-util-2.0.tar.gz and snd-data-0.1.tar.Z
packages to use this driver. They should be in the same
ftp site or BBS from where you got this driver. For
example at nic.funet.fi:pub/OS/Linux/*.
If you are looking for the installation instructions, please
look at linux/Readme.
Welcome to use the Gravis UltraSound driver for Linux. This
driver still supports the same cards than version 1.0c
(SoundBlaster, SB Pro, Pro Audio Spectrum 16 and AdLib).
In addition there is rather limited support for MPU-401
(and compatible) midi cards. Also the OPL-3 synthesizer
of the SB Pro and PAS16 cards is now supported in the 4 OP
modes.
Most of the features of the /dev/sequencer device file are
available just for GUS owners.
The SoundBlaster 16 and SB 16 ASP cards are not supported.
They could work in mono mode with speeds < 22 kHz.
The OPL-3 chicp of the SB 16 should work but it doesn't.
NOTE! There are separate driver for CD-ROMS supported by
some soundcards. The driver for CDU31A (Fusion 16) is
called cdu31a-0.6.diff.z. It will be contained in the
Linux version 0.99.12. The driver for the CD-ROM of SB Pro
is sbpcd0.4.tar.gz (these were the latest versions when I wrote
this). These files should be at least at sunsite.unc.edu.
Also the SCSI interface of the PAS16 should be supported by
Linux 0.99.13k and later.
There is also a driver for joystick. Look for file joystick-0.5.tar.gz
(sunsite).
Compatibility with the earlier versions
---------------------------------------
IMPORTANT!!!!!!!!!!!!!!!!!!!!!!
This version is not binary or source compatible with the version 1.0c.
The ioctl() interface has changed completely since version 1.0c. All
programs using this driver must be at least recompiled.
The snd-util-2.0 package contains some utilities for this version.
The version 1.0c and earlier used a 'nonportable' ioctl calling scheme
where the input argument was passed by value and the output value was
returned as the functional return. For example setting the speed of
/dev/dsp were done as the following:
int actual_speed;
actual_speed = ioctl(fd, SOUND_PCM_WRITE_RATE, 44100);
After version 1.99.0 this must be done as the following:
int actual_speed = 44100;
ioctl(fd, SOUND_PCM_WRITE_RATE, &actual_speed);
If you have an application written for the version 1.0, you should search
for the strings SNDCTL_ and SOUND_ and to check the parameters.
The following ioctl calls have changed:
SNDCTL_SEQ_GETOUTCOUNT
SNDCTL_SEQ_GETINCOUNT
SNDCTL_SEQ_TESTMIDI
SNDCTL_DSP_SPEED
SNDCTL_DSP_STEREO
SNDCTL_DSP_GETBLKSIZE
SNDCTL_DSP_SAMPLESIZE
SOUND_PCM_WRITE_CHANNELS
SOUND_PCM_WRITE_FILTER
SOUND_PCM_READ_RATE
SOUND_PCM_READ_CHANNELS
SOUND_PCM_READ_BITS
SOUND_PCM_READ_FILTER
SOUND_PCM_WRITE_BITS
SOUND_PCM_WRITE_RATE
SOUND_MIXER_READ_* (several ones)
SOUND_MIXER_WRITE_* (several ones)
Since the this version will support more than one synthesizer devices
at the same time, the ioctl(SNDCTL_FM_LOAD_INSTR) is obsolete. In addition
there is some new fields which must be initialized. Look at the sbiset.c in
the snd-util-2.0 package for further info.
This version is almost 100% compatible with the alpha test version (1.99.9). The
difference is in the installation procedure.
Using the driver under other environments than Linux
----------------------------------------------------
**** There is some ISC stuff in this driver. Please stay away ****
This stuff is here just because I want to be in sync with the porters. This
ports don't work yet.
The ISC port is by Andy Warner (andy@harris.nl).
There FreeBSD port is by
There is a FreeBSD port by Jim Lowe (james@blatz.cs.uwm.edu) in the directory
freebsd. (Based on my 386bsd port which was in the previous release (1.99.9).
It's should work but it requires still some testing. It should work
with the NetBSD 0.9 also but propably not with the 386bsd 0.1.
There has been some problems with GUS in SCO and NetBSD.
In addition I'm preparing a SCO port myself. Yet again, these ports
are little incomplete and untested. It could be possible to get them to work
with finite amount of hacking but be careful.
New features
------------
There is also some changes which make this version more usable than
the version 1.0c.
- /dev/dsp and /dev/audio
The DMA buffering is now little bit more intelligent than earlier. The
buffer size is selected run-time so that a buffer holds data for 0.5 to
1.0 seconds of recording or playback. This makes recording more comfortable
than with version 1.0. With the previous version there was sometimes more
than 10 seconds of delay before the driver returned the first input byte.
There is also support for more than one digitized voice devices. The device
files /dev/dsp1 and /dev/audio1 (minor 19 and 20) are available with PAS16.
The /dev/dsp (/dev/audio) is connected to the PCM circuit of the PAS16 itself
and the /dev/dsp1 (/dev/audio1) to the SB emulation of PAS16 card. Two
dsp/audio devices are available also if you have combination of SB and GUS.
With GUS and PAS16 you will have even three dsp/audio devices. These devices
can be used independently and can be active at the same time (3 channels
at the same time propably don't work).
The dsp/audio support of PAS16 should be much cleaner now since the
constant clicking sound between the DMA blocks (about once per second) has
been eliminated.
The stereo playback of GUS doesn't work perfectly. There is lot of
clicking in the output.
- /dev/mixer
No changes.
There is no mixer for the GUS yet.
- /dev/sequencer
This part has the most changes. Mostly to support the rich
features of the Gravis UltraSound. There is also the support
for the OPL-3 synthesizer chip.
- /dev/sndstat
This is a new devicefile for debugging purposes. A better place for
it is in the /proc -directory but I was just too lazy to implement it
properly. The /dev/sndstat (major 14, minor 6) is a file which returns
info about the current configuration (see the example below). If you
send me a error/problem report, please include a printout from this
device to your message (cat /dev/sndstat).
Note! This device file is currently present only in the Linux version
of this driver.
------ cut here --- cat /dev/sndstat example --------
Sound Driver:1.99.7 (Fri Jul 9 17:01:47 GMT 1993 root@lucifer.savolai.fi)
Config options: 0x00000d4b
Major number: 14
HW config:
Type 4: Gravis Ultrasound at 0x210 irq 15 drq 6
Type 3: ProAudioSpectrum at 0x388 irq 10 drq 3
Type 2: SoundBlaster at 0x220 irq 7 drq 1
Type 1: AdLib at 0x388 irq 0 drq 0
PCM devices:
00: Gravis UltraSound
01: Pro Audio Spectrum
02: SoundBlaster 2.0
Synth devices:
00: Gravis UltraSound
01: Yamaha OPL-3
Midi devices:
00: Gravis UltraSound
01: Pro Audio Spectrum
Mixer(s) installed
------ cut here ---- End of Example -----------
Known bugs
----------
- There was clicking during stereo playback to /dev/dsp with GUS.
* Fixed in 1.99.9 *
- It's not possible to open /dev/dsp (or /dev/audio) while the
/dev/sequencer is open for output and GUS is the only soundcard
installed. It's possible if /dev/dsp is opened before /dev/sequencer
but at this time the GUS is not available for access via /dev/sequencer.
This is a limitation of the driver.
- MPU-401 driver hangs the computer on boot if there is no MPU-401 installed.
It uses by default the I/O port 0x330 whic is used by Adaptec 1542 SCSI
adapter.
- The /dev/sequencer playback to GUS sounds sometimes rather weird. Hitting
^C and playing again should solve this problem. This is propably caused by
incompatibilities between GUS and certain VLB motherboards. Try to avoid
switching between VTs while patches are being loaded to the GUS.
- There was some problems with GUS and Mitsumi CD in version 1.99.8. Fixed
in 1.99.9.
- /dev/audio sounded like stereo with GUS. Fixed in 1.99.9.
- There is a skeleton of the patch manager support. It don't work in
this version.
Future development
------------------
- The SB16 card should be fully supported some day. The SDK for it is
not available yet so it's not possible to implement the 16 bit mode yet.
- Since this driver is no longer just the Linux Sound Driver, it's time
to give it a new name. I have planned to use name VoxWare.
- I'm writing a Hacker's guide to the VoxWare sound driver. Should
be ready within this year (alpha version).
- Completion of the ISC, SCO and BSD ports. Port to SVR4.2.
- I'm interested to implement/include support for new soundcards and
operating systems.
Hint for the soundcard and OS manufacturers:
I'm collecting soundcards (high end ones) and SDKs for them. In
addition I'm collecting PC operating systems. I will be happy if
somebody sends me such items. In addition such kind of donation
makes it easier to change the VoxWare driver to support your
soundcard or operating system. However, please contact me before
sending anything.
I will propably release some fix versions within this and next year. At
least when the non-Linux versions get ready. The next major release (3.0)
will be quite complete rewrite and released after about a year (end of 94 or
beginning of 95).
Contributors
------------
This driver contains code by several contributors. In addition several other
persons have given usefull suggestions. The following is a list of major
contributors. (I could have forgotten some names.)
Craig Metz 1/2 of the PAS16 Mixer and PCM support
Rob Hooft Volume computation algorithm for the FM synth.
Mika Liljeberg uLaw encoding and decoding routines
Greg Lee Volume computation algorithm for the GUS and
lot's of valuable suggestions.
Andy Warner ISC port
Jim Lowe FreeBSD port
Regards,
Hannu Savolainen
hsavolai@cs.helsinki.fi
Snail mail: Hannu Savolainen
Pallaksentie 4 A 2
00970 Helsinki
Finland