]>
Commit | Line | Data |
---|---|---|
72e69166 TI |
1 | ============================================= |
2 | Sound Blaster Audigy mixer / default DSP code | |
3 | ============================================= | |
1da177e4 | 4 | |
72e69166 | 5 | This is based on sb-live-mixer.rst. |
1da177e4 LT |
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. | |
4ae0edc2 | 9 | (This article does not deal with the overall functionality of the |
1da177e4 LT |
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 | ||
72e69166 TI |
16 | Digital mixer controls |
17 | ====================== | |
1da177e4 LT |
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 | ||
72e69166 TI |
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. | |
1da177e4 LT |
46 | |
47 | name='PCM Front Playback Volume',index=0 | |
72e69166 | 48 | ---------------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 55 | ------------------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 62 | ----------------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 68 | -------------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 74 | ---------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 81 | --------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 88 | ------------------------------------ |
1da177e4 LT |
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 | |
72e69166 | 94 | ----------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 101 | ---------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 108 | --------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 114 | ---------------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 120 | --------------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 126 | --------------------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 132 | -------------------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 138 | ------------------------------------ |
1da177e4 LT |
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 | |
72e69166 | 144 | ----------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 150 | ----------------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 157 | ---------------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 163 | ----------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 169 | ---------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 175 | ------------------------------------ |
1da177e4 LT |
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 | |
72e69166 | 181 | --------------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 187 | ------------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 192 | ---------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 197 | ------------------------------------ |
1da177e4 LT |
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 | |
72e69166 | 202 | ---------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 208 | ------------------------------------ |
1da177e4 LT |
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 | |
72e69166 | 214 | ------------------------------------- |
1da177e4 LT |
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 | |
72e69166 | 219 | ------------------------------------------------- |
1da177e4 LT |
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 | ||
72e69166 TI |
225 | PCM stream related controls |
226 | =========================== | |
1da177e4 LT |
227 | |
228 | name='EMU10K1 PCM Volume',index 0-31 | |
72e69166 | 229 | ------------------------------------ |
1da177e4 LT |
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 | ||
72e69166 TI |
234 | * 0 - mono, default 0xffff (no attenuation) |
235 | * 1 - left, default 0xffff (no attenuation) | |
236 | * 2 - right, default 0xffff (no attenuation) | |
1da177e4 LT |
237 | |
238 | name='EMU10K1 PCM Send Routing',index 0-31 | |
72e69166 | 239 | ------------------------------------------ |
1da177e4 LT |
240 | This control specifies the destination - FX-bus accumulators. There 24 |
241 | values with this mapping: | |
242 | ||
72e69166 TI |
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 | |
1da177e4 LT |
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 | |
72e69166 | 272 | ----------------------------------------- |
1da177e4 LT |
273 | It specifies the attenuation (amount) for given destination in range 0-255. |
274 | The channel mapping is following: | |
275 | ||
72e69166 TI |
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 | =============== | |
1da177e4 LT |
305 | |
306 | ftp://opensource.creative.com/pub/doc | |
307 | ------------------------------------- | |
308 | ||
72e69166 TI |
309 | LM4545.pdf |
310 | AC97 Codec | |
1da177e4 | 311 | |
72e69166 TI |
312 | m2049.pdf |
313 | The EMU10K1 Digital Audio Processor | |
1da177e4 | 314 | |
72e69166 TI |
315 | hog63.ps |
316 | FX8010 - A DSP Chip Architecture for Audio Effects | |
1da177e4 LT |
317 | |
318 | ||
319 | WIPO Patents | |
320 | ------------ | |
1da177e4 | 321 | |
72e69166 TI |
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) | |
1da177e4 | 328 | |
72e69166 TI |
329 | WO 9901953 (A1) |
330 | Audio Effects Processor having Decoupled Instruction | |
331 | Execution and Audio Data Sequencing (Jan. 14, 1999) | |
1da177e4 LT |
332 | |
333 | ||
334 | US Patents (http://www.uspto.gov/) | |
335 | ---------------------------------- | |
336 | ||
72e69166 TI |
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) |