rjw | 1f88458 | 2022-01-06 17:20:42 +0800 | [diff] [blame^] | 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) |