summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/sound/RELNOTES.Linux
blob: ea57d0a950c4c3052fda4ae711e83068e0d10e36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
Release notes for the Linux Sound Driver 2.5
--------------------------------------------
There is also a version called 2.5-beta floating around the net. This
version contains some fixes after it. Mainly to the SB and GUS code.

CAUTION!	The SVR4.2 port has not been tested much. Backup your system
		carefully before trying it.

This is mainly a bug fix release. There are couple of new things such as
linear volume mode for GUS and MIDI recording for SB 2.0 and SB Pro.
Also this version supports the mixer of GUS v3.7. (Support for GUS MAX and
the 16-bit daughtercard is coming sooner or later).

NOTE!	The sound driver is a part of the Linux kernel distribution also.
	Check that your kernel doesn't have more recent version than this
	when installing a separately distributed sound driver. The
	version number of this driver is defined in the makefile.

This version contains a driver for the SB16 also.
The SB16 driver requires separate DMA channels for the 8 and 16 bit
modes. There should be a way to share the 8 bit DMA channels between
these modes but this feature is not supported yet.
The SB16 DSP support is by Joerg Schubert (jsb@sth.ruhr-uni-bochum.de).

The SB16 driver has also the Midi input capability even at the same
time with the /dev/dsp. Also the WaveBlaster daughter board is supported.
No support for the ASP chip yet (the ASP chip can be installed but it's
not used by the driver).

You will need the snd-util-2.5.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 $OS/Readme.

This version supports the following soundcards:
GUS, SoundBlaster, SB Pro, SB16, 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
Most of the features of the /dev/sequencer device file are
available just for GUS owners. 

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
---------------------------------------

In this version the ultrasound.h no longer includes the sys/soundcard.h
You have to change the gmod.c of the snd-util-2.0 package and to add an
include for it.

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 this driver with other operating systems than Linux
---------------------------------------------------------

This package contains just the Linux version. The version 2.3
for SCO is available at nic.funet.fi:pub/OS/Linux/ALPHA/sound.
The version 2.3 doesn't work well with xxxxxBSD. Use the version
2.3 for them.

/dev/sndstat
------------

The /dev/sndstat is now available in the SCO and BSD versions also.

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

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/limitations
----------------------

- High speed recording of long audio samples (>20 second) to disk
  is not possible. Everything works until next sync() which delays the
  recording process too much. A delay longer than 0.1 to 0.3 seconds is
  too much.
- The SB16 driver sometimes swaps the left and right channels together.
- Midi input doesn't work with SB and SB Pro (SB16 works).
- 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.
- There are some problems in midi input with MPU-401 and the SB16 midi
  (MPU-401 emulation). This makes it impossible to read long sysex dumps
  using these devices.
- 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 (like mine). 
  Try to avoid
  switching between VTs while patches are being loaded to the GUS.
  This problem disappears completely if you define GUS_PATCH_NO_DMA in the
  local.h (after make config in linux). The drawback is that patch loading
  without DMA takes several times longer than with DMA.
- There is a skeleton of the patch manager support. It don't work in
  this version. 


Future development
------------------

- 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(/next) 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		Initial ISC port
	Jim Lowe		Initial FreeBSD port
	Anders Baekgaard 	Bughunting and valuable suggestions.
	Joerg Schubert		SB16 DSP support.
	Andrew Robinson 	Improvements to the GUS driver
	Megens SA		MIDI recording for SB and SB Pro.
	Mikael Nordqvist  	Linear volume support for GUS.
	Ian Hartas		SVR4.2 port
	Markus Aroharju	and
	Risto Kankkunen		Major contributions to the mixer support
				of GUS v3.7.
	Hunyue Yau		Sound Galaxy NX Pro mixer support.

Regards,

Hannu Savolainen
hannu@voxware.pp.fi, Hannu.Savolainen@Helsinki.fi

Snail mail:	Hannu Savolainen
		Pallaksentie 4 A 2
		00970 Helsinki
		Finland
OpenPOWER on IntegriCloud