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