2 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
\r
3 ³ Programming the SoundBlaster Pro ³
\r
4 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
\r
6 Written for the PC-GPE by Mark Feldman
\r
7 e-mail address : u914097@student.canberra.edu.au
\r
8 myndale@cairo.anu.edu.au
\r
10 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
\r
11 ³ THIS FILE MAY NOT BE DISTRIBUTED ³
\r
12 ³ SEPARATE TO THE ENTIRE PC-GPE COLLECTION. ³
\r
13 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
\r
16 ÚÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
\r
20 I assume no responsibility whatsoever for any effect that this file, the
\r
21 information contained therein or the use thereof has on you, your sanity,
\r
22 computer, spouse, children, pets or anything else related to you or your
\r
23 existance. No warranty is provided nor implied with this information.
\r
25 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
\r
29 I still own a SoundBlaster 1.0 (don't laugh) so I haven't been able to
\r
30 test any of the information in this file, ie don't take any of this as
\r
33 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
\r
37 Generating stereo FM sound on the SB Pro is similar to the way it's done
\r
38 on the SB 1.x, you just use different ports for the left and right channels.
\r
39 The file ADLIB.TXT has more information on this.
\r
41 Generating stereo sounds with the DSP is similar to the mono method, but you
\r
42 send *two* bytes for every sample. The first one goes to the left channel
\r
43 and the second one goes to the right. You also need to reset the mixer chip
\r
44 and tell the soundblaster you want to play a stereo sound (see below). This
\r
45 has the advantage in that you can store the info for both channels in a
\r
46 single data block and transfer it by still using only one DMA channel. The
\r
47 WAV file format actually stores it's audio waveform data like this (see the
\r
48 PC-GPE file WAV.TXT).
\r
54 ÚÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ
\r
55 ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ........
\r
56 ÀÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄ
\r
61 To play the sound the SoundBlaster Pro is set for stereo output and the DMA
\r
62 chip is programmed to send this chunk as is.
\r
65 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
\r
66 ³ The CT 1345 Mixer Chip ³
\r
67 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
\r
70 You access the mixer registers the same way you access the regular SB
\r
71 registers, but Port 2x4h is the index port and 2x5h is the data read/write
\r
72 port, where x = 2 for base address jumper setting 220h
\r
73 x = 3 for base address jumper setting 230h
\r
74 x = 4 for base address jumper setting 240h
\r
76 So setting a mixer register to a given value can be accomplished with the
\r
77 following procedure:
\r
79 { base = 220h, 230 or 240h }
\r
80 procedure SetMixerReg(base : word; index, value : byte);
\r
82 Port[base + 4] := index;
\r
83 Port[base + 5] := value;
\r
87 You can also read a register's current value:
\r
89 function GetMixerReg(base : word; index : byte) : byte;
\r
91 Port[base + 4] := index;
\r
92 GetMixerReg := Port[base + 5];
\r
99 The Data Reset register is used to reset the mixer chip. Set this register to
\r
100 0 before changing any of the other mixer registers.
\r
103 ÚÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ¿
\r
104 ³ 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 ³
\r
105 ÀÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÙ
\r
106 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
\r
113 The Input register selects the SB Pro sound input source and filter type.
\r
116 ÚÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ¿
\r
117 ³ 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 ³
\r
118 ÀÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÙ
\r
121 ÚÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄ¿ ÚÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
\r
122 ³ In Filter ³ ³ ADC Source ³
\r
123 ³ 000 - Low ³ ³ 00 - Microphone 1 ³
\r
124 ³ 001 - High ³ ³ 01 - CD ³
\r
125 ³ 010 - No Filter ³ ³ 10 - Microphone 2 ³
\r
126 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ 11 - Line In ³
\r
127 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
\r
131 The Output register determines whether to output sound in stereo or mono, in
\r
132 stereo two bytes must be sent for each sample, the first one goes to the left
\r
133 channel and the next one goes to the right. This register allows you to
\r
134 bypass the output filter.
\r
137 ÚÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ¿
\r
138 ³ 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 ³
\r
139 ÀÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÙ
\r
141 ÚÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÁÄÄÄÄÄÄÄÄÄ¿
\r
143 ³ 0 - Use O/P Filter ³ ³ 0 - Mono ³
\r
144 ³ 1 - Bypass O/P Filter ³ ³ 1 - Stereo ³
\r
145 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ
\r
148 The Master Volume register allows you to set the master volume of each
\r
152 ÚÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ¿
\r
153 ³ 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 ³
\r
154 ÀÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÙ
\r
155 ÀÄÄÄÄÄÂÄÄÄÄÄÙ ÀÄÄÄÄÄÂÄÄÄÄÄÙ
\r
157 ÚÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄ¿
\r
158 ³ Master Volume ³³ Master Volume ³
\r
160 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
\r
163 The Voice Volume register allows you to set the volume of each channel for
\r
167 ÚÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ¿
\r
168 ³ 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 ³
\r
169 ÀÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÙ
\r
170 ÀÄÄÄÄÄÂÄÄÄÄÄÙ ÀÄÄÄÄÄÂÄÄÄÄÄÙ
\r
172 ÚÄÄÄÄÄÄÄÁÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÁÄÄÄÄÄÄ¿
\r
173 ³ Voice Volume ³³ Voice Volume ³
\r
175 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
\r
177 Voice Volume Voice Volume
\r
181 The FM Volume register allows you to set the volume of each channel for
\r
187 ÚÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ¿
\r
188 ³ 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 ³
\r
189 ÀÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÙ
\r
190 ÀÄÄÄÄÄÂÄÄÄÄÄÙ ÀÄÄÄÄÄÂÄÄÄÄÄÙ
\r
192 ÚÄÄÄÄÄÁÄÄÄÄÄ¿ ÚÄÄÄÄÄÁÄÄÄÄÄ¿
\r
193 ³ FM Volume ³ ³ FM Volume ³
\r
195 ÀÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÙ
\r
198 The CD Volume register allows you to set the volume of each channel for
\r
202 ÚÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ¿
\r
203 ³ 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 ³
\r
204 ÀÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÙ
\r
205 ÀÄÄÄÄÄÂÄÄÄÄÄÙ ÀÄÄÄÄÄÂÄÄÄÄÄÙ
\r
207 ÚÄÄÄÄÄÁÄÄÄÄÄ¿ ÚÄÄÄÄÄÁÄÄÄÄÄ¿
\r
208 ³ CD Volume ³ ³ CD Volume ³
\r
210 ÀÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÙ
\r
213 The Line Volume register allows you to set the volume of each channel for
\r
218 ÚÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ¿
\r
219 ³ 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 ³
\r
220 ÀÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÙ
\r
221 ÀÄÄÄÄÄÂÄÄÄÄÄÙ ÀÄÄÄÄÄÂÄÄÄÄÄÙ
\r
223 ÚÄÄÄÄÄÄÁÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÁÄÄÄÄÄÄ¿
\r
224 ³ Line Volume ³ ³ Line Volume ³
\r
226 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
\r
228 The Mic Mixing register allows you to set the input volume for the
\r
232 ÚÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ¿
\r
233 ³ 7 ³ 6 ³ 5 ³ 4 ³ 3 ³ 2 ³ 1 ³ 0 ³
\r
234 ÀÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÙ
\r
241 ÚÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
\r
245 Title : The SoundBlaster Developpers Kit
\r
246 Publishers : Creative Labs Inc
\r
247 Creative Technology PTE LTD
\r
249 Title : Sound Blaster - The Official Book
\r
250 Authors : Richard Heimlich, David M. Golden, Ivan Luk, Peter M. Ridge
\r
251 Publishers : Osborne/McGraw Hill
\r
252 ISBN : 0-07-881907-5
\r
254 Some of the information in this file was either obtained from or verified
\r
255 by the source code in a public domain library called SOUNDX by Peter
\r
256 Sprenger. I haven't tried using his library yet (I don't have a C compiler
\r
257 at the moment) but it looks very well done and contains numerous sound card
\r
258 detection routines. Says Peter : "It would be nice, that when you make
\r
259 something commercial with my routines, that you send me a copy of your
\r
260 project or send me some bucks, just enough for pizza and coke to support my
\r
261 night programming sessions. If you send me nothing, ok. But USE the stuff,
\r
262 if you can need it!". Heh...a REAL programmer!
\r
264 ftp site: ftp.uwp.edu
\r
265 directory: /pub/msdos/demos/programming/game-dev/source
\r
266 filename: soundx.zip
\r