diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /Documentation/sound/alsa/SB-Live-mixer.txt |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'Documentation/sound/alsa/SB-Live-mixer.txt')
-rw-r--r-- | Documentation/sound/alsa/SB-Live-mixer.txt | 356 |
1 files changed, 356 insertions, 0 deletions
diff --git a/Documentation/sound/alsa/SB-Live-mixer.txt b/Documentation/sound/alsa/SB-Live-mixer.txt new file mode 100644 index 000000000000..651adaf60473 --- /dev/null +++ b/Documentation/sound/alsa/SB-Live-mixer.txt | |||
@@ -0,0 +1,356 @@ | |||
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. | ||
8 | (This acticle does not deal with the overall functionality of the | ||
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 | |||
90 | name='Music Playback Volume',index=0 | ||
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 | |||
96 | name='Music Capture Volume',index=0 | ||
97 | name='Music Capture Switch',index=0 | ||
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 | ||