Merge remote-tracking branches 'spi/topic/atmel', 'spi/topic/bcm63xx', 'spi/topic...
[sfrench/cifs-2.6.git] / Documentation / sound / cards / audigy-mixer.rst
1 =============================================
2 Sound Blaster Audigy mixer / default DSP code
3 =============================================
4
5 This is based on sb-live-mixer.rst.
6
7 The EMU10K2 chips have a DSP part which can be programmed to support 
8 various ways of sample processing, which is described here.
9 (This article does not deal with the overall functionality of the 
10 EMU10K2 chips. See the manuals section for further details.)
11
12 The ALSA driver programs this portion of chip by default code
13 (can be altered later) which offers the following functionality:
14
15
16 Digital mixer controls
17 ======================
18
19 These controls are built using the DSP instructions. They offer extended
20 functionality. Only the default build-in code in the ALSA driver is described
21 here. Note that the controls work as attenuators: the maximum value is the 
22 neutral position leaving the signal unchanged. Note that if the  same destination 
23 is mentioned in multiple controls, the signal is accumulated and can be wrapped 
24 (set to maximal or minimal value without checking of overflow).
25
26
27 Explanation of used abbreviations:
28
29 DAC
30         digital to analog converter
31 ADC
32         analog to digital converter
33 I2S
34         one-way three wire serial bus for digital sound by Philips Semiconductors
35         (this standard is used for connecting standalone DAC and ADC converters)
36 LFE
37         low frequency effects (subwoofer signal)
38 AC97
39         a chip containing an analog mixer, DAC and ADC converters
40 IEC958
41         S/PDIF
42 FX-bus
43         the EMU10K2 chip has an effect bus containing 64 accumulators.
44         Each of the synthesizer voices can feed its output to these accumulators
45         and the DSP microcontroller can operate with the resulting sum.
46
47 name='PCM Front Playback Volume',index=0
48 ----------------------------------------
49 This control is used to attenuate samples for left and right front PCM FX-bus
50 accumulators. ALSA uses accumulators 8 and 9 for left and right front PCM 
51 samples for 5.1 playback. The result samples are forwarded to the front DAC PCM 
52 slots of the Philips DAC.
53
54 name='PCM Surround Playback Volume',index=0
55 -------------------------------------------
56 This control is used to attenuate samples for left and right surround PCM FX-bus
57 accumulators. ALSA uses accumulators 2 and 3 for left and right surround PCM 
58 samples for 5.1 playback. The result samples are forwarded to the surround DAC PCM 
59 slots of the Philips DAC.
60
61 name='PCM Center Playback Volume',index=0
62 -----------------------------------------
63 This control is used to attenuate samples for center PCM FX-bus accumulator.
64 ALSA uses accumulator 6 for center PCM sample for 5.1 playback. The result sample
65 is forwarded to the center DAC PCM slot of the Philips DAC.
66
67 name='PCM LFE Playback Volume',index=0
68 --------------------------------------
69 This control is used to attenuate sample for LFE PCM FX-bus accumulator. 
70 ALSA uses accumulator 7 for LFE PCM sample for 5.1 playback. The result sample 
71 is forwarded to the LFE DAC PCM slot of the Philips DAC.
72
73 name='PCM Playback Volume',index=0
74 ----------------------------------
75 This control is used to attenuate samples for left and right PCM FX-bus
76 accumulators. ALSA uses accumulators 0 and 1 for left and right PCM samples for
77 stereo playback. The result samples are forwarded to the front DAC PCM slots 
78 of the Philips DAC.
79
80 name='PCM Capture Volume',index=0
81 ---------------------------------
82 This control is used to attenuate samples for left and right PCM FX-bus
83 accumulator. ALSA uses accumulators 0 and 1 for left and right PCM.
84 The result is forwarded to the ADC capture FIFO (thus to the standard capture
85 PCM device).
86
87 name='Music Playback Volume',index=0
88 ------------------------------------
89 This control is used to attenuate samples for left and right MIDI FX-bus
90 accumulators. ALSA uses accumulators 4 and 5 for left and right MIDI samples.
91 The result samples are forwarded to the front DAC PCM slots of the AC97 codec.
92
93 name='Music Capture Volume',index=0
94 -----------------------------------
95 These controls are used to attenuate samples for left and right MIDI FX-bus
96 accumulator. ALSA uses accumulators 4 and 5 for left and right PCM.
97 The result is forwarded to the ADC capture FIFO (thus to the standard capture
98 PCM device).
99
100 name='Mic Playback Volume',index=0
101 ----------------------------------
102 This control is used to attenuate samples for left and right Mic input.
103 For Mic input is used AC97 codec. The result samples are forwarded to 
104 the front DAC PCM slots of the Philips DAC. Samples are forwarded to Mic
105 capture FIFO (device 1 - 16bit/8KHz mono) too without volume control.
106
107 name='Mic Capture Volume',index=0
108 ---------------------------------
109 This control is used to attenuate samples for left and right Mic input.
110 The result is forwarded to the ADC capture FIFO (thus to the standard capture
111 PCM device).
112
113 name='Audigy CD Playback Volume',index=0
114 ----------------------------------------
115 This control is used to attenuate samples from left and right IEC958 TTL
116 digital inputs (usually used by a CDROM drive). The result samples are
117 forwarded to the front DAC PCM slots of the Philips DAC.
118
119 name='Audigy CD Capture Volume',index=0
120 ---------------------------------------
121 This control is used to attenuate samples from left and right IEC958 TTL
122 digital inputs (usually used by a CDROM drive). The result samples are
123 forwarded to the ADC capture FIFO (thus to the standard capture PCM device).
124
125 name='IEC958 Optical Playback Volume',index=0
126 ---------------------------------------------
127 This control is used to attenuate samples from left and right IEC958 optical
128 digital input. The result samples are forwarded to the front DAC PCM slots
129 of the Philips DAC.
130
131 name='IEC958 Optical Capture Volume',index=0
132 --------------------------------------------
133 This control is used to attenuate samples from left and right IEC958 optical
134 digital inputs. The result samples are forwarded to the ADC capture FIFO
135 (thus to the standard capture PCM device).
136
137 name='Line2 Playback Volume',index=0
138 ------------------------------------
139 This control is used to attenuate samples from left and right I2S ADC
140 inputs (on the AudigyDrive). The result samples are forwarded to the front
141 DAC PCM slots of the Philips DAC.
142
143 name='Line2 Capture Volume',index=1
144 -----------------------------------
145 This control is used to attenuate samples from left and right I2S ADC
146 inputs (on the AudigyDrive). The result samples are forwarded to the ADC
147 capture FIFO (thus to the standard capture PCM device).
148
149 name='Analog Mix Playback Volume',index=0
150 -----------------------------------------
151 This control is used to attenuate samples from left and right I2S ADC
152 inputs from Philips ADC. The result samples are forwarded to the front
153 DAC PCM slots of the Philips DAC. This contains mix from analog sources
154 like CD, Line In, Aux, ....
155
156 name='Analog Mix Capture Volume',index=1
157 ----------------------------------------
158 This control is used to attenuate samples from left and right I2S ADC
159 inputs Philips ADC. The result samples are forwarded to the ADC
160 capture FIFO (thus to the standard capture PCM device).
161
162 name='Aux2 Playback Volume',index=0
163 -----------------------------------
164 This control is used to attenuate samples from left and right I2S ADC
165 inputs (on the AudigyDrive). The result samples are forwarded to the front
166 DAC PCM slots of the Philips DAC.
167
168 name='Aux2 Capture Volume',index=1
169 ----------------------------------
170 This control is used to attenuate samples from left and right I2S ADC
171 inputs (on the AudigyDrive). The result samples are forwarded to the ADC
172 capture FIFO (thus to the standard capture PCM device).
173
174 name='Front Playback Volume',index=0
175 ------------------------------------
176 All stereo signals are mixed together and mirrored to surround, center and LFE.
177 This control is used to attenuate samples for left and right front speakers of
178 this mix.
179
180 name='Surround Playback Volume',index=0
181 ---------------------------------------
182 All stereo signals are mixed together and mirrored to surround, center and LFE.
183 This control is used to attenuate samples for left and right surround speakers of
184 this mix.
185
186 name='Center Playback Volume',index=0
187 -------------------------------------
188 All stereo signals are mixed together and mirrored to surround, center and LFE.
189 This control is used to attenuate sample for center speaker of this mix.
190
191 name='LFE Playback Volume',index=0
192 ----------------------------------
193 All stereo signals are mixed together and mirrored to surround, center and LFE.
194 This control is used to attenuate sample for LFE speaker of this mix.
195
196 name='Tone Control - Switch',index=0
197 ------------------------------------
198 This control turns the tone control on or off. The samples for front, rear
199 and center / LFE outputs are affected.
200
201 name='Tone Control - Bass',index=0
202 ----------------------------------
203 This control sets the bass intensity. There is no neutral value!!
204 When the tone control code is activated, the samples are always modified.
205 The closest value to pure signal is 20.
206
207 name='Tone Control - Treble',index=0
208 ------------------------------------
209 This control sets the treble intensity. There is no neutral value!!
210 When the tone control code is activated, the samples are always modified.
211 The closest value to pure signal is 20.
212
213 name='Master Playback Volume',index=0
214 -------------------------------------
215 This control is used to attenuate samples for front, surround, center and 
216 LFE outputs.
217
218 name='IEC958 Optical Raw Playback Switch',index=0
219 -------------------------------------------------
220 If this switch is on, then the samples for the IEC958 (S/PDIF) digital
221 output are taken only from the raw FX8010 PCM, otherwise standard front
222 PCM samples are taken.
223
224
225 PCM stream related controls
226 ===========================
227
228 name='EMU10K1 PCM Volume',index 0-31
229 ------------------------------------
230 Channel volume attenuation in range 0-0xffff. The maximum value (no
231 attenuation) is default. The channel mapping for three values is
232 as follows:
233
234 * 0 - mono, default 0xffff (no attenuation)
235 * 1 - left, default 0xffff (no attenuation)
236 * 2 - right, default 0xffff (no attenuation)
237
238 name='EMU10K1 PCM Send Routing',index 0-31
239 ------------------------------------------
240 This control specifies the destination - FX-bus accumulators. There 24
241 values with this mapping:
242
243 * 0 -  mono, A destination (FX-bus 0-63), default 0
244 * 1 -  mono, B destination (FX-bus 0-63), default 1
245 * 2 -  mono, C destination (FX-bus 0-63), default 2
246 * 3 -  mono, D destination (FX-bus 0-63), default 3
247 * 4 -  mono, E destination (FX-bus 0-63), default 0
248 * 5 -  mono, F destination (FX-bus 0-63), default 0
249 * 6 -  mono, G destination (FX-bus 0-63), default 0
250 * 7 -  mono, H destination (FX-bus 0-63), default 0
251 * 8 -  left, A destination (FX-bus 0-63), default 0
252 * 9 -  left, B destination (FX-bus 0-63), default 1
253 * 10 -  left, C destination (FX-bus 0-63), default 2
254 * 11 -  left, D destination (FX-bus 0-63), default 3
255 * 12 -  left, E destination (FX-bus 0-63), default 0
256 * 13 -  left, F destination (FX-bus 0-63), default 0
257 * 14 -  left, G destination (FX-bus 0-63), default 0
258 * 15 -  left, H destination (FX-bus 0-63), default 0
259 * 16 - right, A destination (FX-bus 0-63), default 0
260 * 17 - right, B destination (FX-bus 0-63), default 1
261 * 18 - right, C destination (FX-bus 0-63), default 2
262 * 19 - right, D destination (FX-bus 0-63), default 3
263 * 20 - right, E destination (FX-bus 0-63), default 0
264 * 21 - right, F destination (FX-bus 0-63), default 0
265 * 22 - right, G destination (FX-bus 0-63), default 0
266 * 23 - right, H destination (FX-bus 0-63), default 0
267
268 Don't forget that it's illegal to assign a channel to the same FX-bus accumulator 
269 more than once (it means 0=0 && 1=0 is an invalid combination).
270  
271 name='EMU10K1 PCM Send Volume',index 0-31
272 -----------------------------------------
273 It specifies the attenuation (amount) for given destination in range 0-255.
274 The channel mapping is following:
275
276 *  0 -  mono, A destination attn, default 255 (no attenuation)
277 *  1 -  mono, B destination attn, default 255 (no attenuation)
278 *  2 -  mono, C destination attn, default 0 (mute)
279 *  3 -  mono, D destination attn, default 0 (mute)
280 *  4 -  mono, E destination attn, default 0 (mute)
281 *  5 -  mono, F destination attn, default 0 (mute)
282 *  6 -  mono, G destination attn, default 0 (mute)
283 *  7 -  mono, H destination attn, default 0 (mute)
284 *  8 -  left, A destination attn, default 255 (no attenuation)
285 *  9 -  left, B destination attn, default 0 (mute)
286 * 10 -  left, C destination attn, default 0 (mute)
287 * 11 -  left, D destination attn, default 0 (mute)
288 * 12 -  left, E destination attn, default 0 (mute)
289 * 13 -  left, F destination attn, default 0 (mute)
290 * 14 -  left, G destination attn, default 0 (mute)
291 * 15 -  left, H destination attn, default 0 (mute)
292 * 16 - right, A destination attn, default 0 (mute)
293 * 17 - right, B destination attn, default 255 (no attenuation)
294 * 18 - right, C destination attn, default 0 (mute)
295 * 19 - right, D destination attn, default 0 (mute)
296 * 20 - right, E destination attn, default 0 (mute)
297 * 21 - right, F destination attn, default 0 (mute)
298 * 22 - right, G destination attn, default 0 (mute)
299 * 23 - right, H destination attn, default 0 (mute)
300
301
302
303 MANUALS/PATENTS
304 ===============
305
306 ftp://opensource.creative.com/pub/doc
307 -------------------------------------
308
309 LM4545.pdf
310         AC97 Codec
311
312 m2049.pdf
313         The EMU10K1 Digital Audio Processor
314
315 hog63.ps
316         FX8010 - A DSP Chip Architecture for Audio Effects
317
318
319 WIPO Patents
320 ------------
321
322 WO 9901813 (A1)
323         Audio Effects Processor with multiple asynchronous streams
324         (Jan. 14, 1999)
325
326 WO 9901814 (A1)
327         Processor with Instruction Set for Audio Effects (Jan. 14, 1999)
328
329 WO 9901953 (A1)
330         Audio Effects Processor having Decoupled Instruction
331         Execution and Audio Data Sequencing (Jan. 14, 1999)
332
333
334 US Patents (http://www.uspto.gov/)
335 ----------------------------------
336
337 US 5925841
338         Digital Sampling Instrument employing cache memory (Jul. 20, 1999)
339
340 US 5928342
341         Audio Effects Processor integrated on a single chip
342         with a multiport memory onto which multiple asynchronous
343         digital sound samples can be concurrently loaded
344         (Jul. 27, 1999)
345
346 US 5930158
347         Processor with Instruction Set for Audio Effects (Jul. 27, 1999)
348
349 US 6032235
350         Memory initialization circuit (Tram) (Feb. 29, 2000)
351
352 US 6138207
353         Interpolation looping of audio samples in cache connected to
354         system bus with prioritization and modification of bus transfers
355         in accordance with loop ends and minimum block sizes
356         (Oct. 24, 2000)
357
358 US 6151670
359         Method for conserving memory storage using a
360         pool of  short term memory registers
361         (Nov. 21, 2000)
362
363 US 6195715
364         Interrupt control for multiple programs communicating with
365         a common interrupt by associating programs to GP registers,
366         defining interrupt register, polling GP registers, and invoking
367         callback routine associated with defined interrupt register
368         (Feb. 27, 2001)