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