|  |  | 
|  | Sound Blaster Audigy mixer / default DSP code | 
|  | =========================================== | 
|  |  | 
|  | This is based on SB-Live-mixer.txt. | 
|  |  | 
|  | The EMU10K2 chips have a DSP part which can be programmed to support | 
|  | various ways of sample processing, which is described here. | 
|  | (This article does not deal with the overall functionality of the | 
|  | EMU10K2 chips. See the manuals section for further details.) | 
|  |  | 
|  | The ALSA driver programs this portion of chip by default code | 
|  | (can be altered later) which offers the following functionality: | 
|  |  | 
|  |  | 
|  | 1) Digital mixer controls | 
|  | ------------------------- | 
|  |  | 
|  | These controls are built using the DSP instructions. They offer extended | 
|  | functionality. Only the default build-in code in the ALSA driver is described | 
|  | here. Note that the controls work as attenuators: the maximum value is the | 
|  | neutral position leaving the signal unchanged. Note that if the  same destination | 
|  | is mentioned in multiple controls, the signal is accumulated and can be wrapped | 
|  | (set to maximal or minimal value without checking of overflow). | 
|  |  | 
|  |  | 
|  | Explanation of used abbreviations: | 
|  |  | 
|  | DAC    - digital to analog converter | 
|  | ADC    - analog to digital converter | 
|  | I2S    - one-way three wire serial bus for digital sound by Philips Semiconductors | 
|  | (this standard is used for connecting standalone DAC and ADC converters) | 
|  | LFE    - low frequency effects (subwoofer signal) | 
|  | AC97   - a chip containing an analog mixer, DAC and ADC converters | 
|  | IEC958 - S/PDIF | 
|  | FX-bus - the EMU10K2 chip has an effect bus containing 64 accumulators. | 
|  | Each of the synthesizer voices can feed its output to these accumulators | 
|  | and the DSP microcontroller can operate with the resulting sum. | 
|  |  | 
|  | name='PCM Front Playback Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples for left and right front PCM FX-bus | 
|  | accumulators. ALSA uses accumulators 8 and 9 for left and right front PCM | 
|  | samples for 5.1 playback. The result samples are forwarded to the front DAC PCM | 
|  | slots of the Philips DAC. | 
|  |  | 
|  | name='PCM Surround Playback Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples for left and right surround PCM FX-bus | 
|  | accumulators. ALSA uses accumulators 2 and 3 for left and right surround PCM | 
|  | samples for 5.1 playback. The result samples are forwarded to the surround DAC PCM | 
|  | slots of the Philips DAC. | 
|  |  | 
|  | name='PCM Center Playback Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples for center PCM FX-bus accumulator. | 
|  | ALSA uses accumulator 6 for center PCM sample for 5.1 playback. The result sample | 
|  | is forwarded to the center DAC PCM slot of the Philips DAC. | 
|  |  | 
|  | name='PCM LFE Playback Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate sample for LFE PCM FX-bus accumulator. | 
|  | ALSA uses accumulator 7 for LFE PCM sample for 5.1 playback. The result sample | 
|  | is forwarded to the LFE DAC PCM slot of the Philips DAC. | 
|  |  | 
|  | name='PCM Playback Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples for left and right PCM FX-bus | 
|  | accumulators. ALSA uses accumulators 0 and 1 for left and right PCM samples for | 
|  | stereo playback. The result samples are forwarded to the front DAC PCM slots | 
|  | of the Philips DAC. | 
|  |  | 
|  | name='PCM Capture Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples for left and right PCM FX-bus | 
|  | accumulator. ALSA uses accumulators 0 and 1 for left and right PCM. | 
|  | The result is forwarded to the ADC capture FIFO (thus to the standard capture | 
|  | PCM device). | 
|  |  | 
|  | name='Music Playback Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples for left and right MIDI FX-bus | 
|  | accumulators. ALSA uses accumulators 4 and 5 for left and right MIDI samples. | 
|  | The result samples are forwarded to the front DAC PCM slots of the AC97 codec. | 
|  |  | 
|  | name='Music Capture Volume',index=0 | 
|  |  | 
|  | These controls are used to attenuate samples for left and right MIDI FX-bus | 
|  | accumulator. ALSA uses accumulators 4 and 5 for left and right PCM. | 
|  | The result is forwarded to the ADC capture FIFO (thus to the standard capture | 
|  | PCM device). | 
|  |  | 
|  | name='Mic Playback Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples for left and right Mic input. | 
|  | For Mic input is used AC97 codec. The result samples are forwarded to | 
|  | the front DAC PCM slots of the Philips DAC. Samples are forwarded to Mic | 
|  | capture FIFO (device 1 - 16bit/8KHz mono) too without volume control. | 
|  |  | 
|  | name='Mic Capture Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples for left and right Mic input. | 
|  | The result is forwarded to the ADC capture FIFO (thus to the standard capture | 
|  | PCM device). | 
|  |  | 
|  | name='Audigy CD Playback Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples from left and right IEC958 TTL | 
|  | digital inputs (usually used by a CDROM drive). The result samples are | 
|  | forwarded to the front DAC PCM slots of the Philips DAC. | 
|  |  | 
|  | name='Audigy CD Capture Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples from left and right IEC958 TTL | 
|  | digital inputs (usually used by a CDROM drive). The result samples are | 
|  | forwarded to the ADC capture FIFO (thus to the standard capture PCM device). | 
|  |  | 
|  | name='IEC958 Optical Playback Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples from left and right IEC958 optical | 
|  | digital input. The result samples are forwarded to the front DAC PCM slots | 
|  | of the Philips DAC. | 
|  |  | 
|  | name='IEC958 Optical Capture Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples from left and right IEC958 optical | 
|  | digital inputs. The result samples are forwarded to the ADC capture FIFO | 
|  | (thus to the standard capture PCM device). | 
|  |  | 
|  | name='Line2 Playback Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples from left and right I2S ADC | 
|  | inputs (on the AudigyDrive). The result samples are forwarded to the front | 
|  | DAC PCM slots of the Philips DAC. | 
|  |  | 
|  | name='Line2 Capture Volume',index=1 | 
|  |  | 
|  | This control is used to attenuate samples from left and right I2S ADC | 
|  | inputs (on the AudigyDrive). The result samples are forwarded to the ADC | 
|  | capture FIFO (thus to the standard capture PCM device). | 
|  |  | 
|  | name='Analog Mix Playback Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples from left and right I2S ADC | 
|  | inputs from Philips ADC. The result samples are forwarded to the front | 
|  | DAC PCM slots of the Philips DAC. This contains mix from analog sources | 
|  | like CD, Line In, Aux, .... | 
|  |  | 
|  | name='Analog Mix Capture Volume',index=1 | 
|  |  | 
|  | This control is used to attenuate samples from left and right I2S ADC | 
|  | inputs Philips ADC. The result samples are forwarded to the ADC | 
|  | capture FIFO (thus to the standard capture PCM device). | 
|  |  | 
|  | name='Aux2 Playback Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples from left and right I2S ADC | 
|  | inputs (on the AudigyDrive). The result samples are forwarded to the front | 
|  | DAC PCM slots of the Philips DAC. | 
|  |  | 
|  | name='Aux2 Capture Volume',index=1 | 
|  |  | 
|  | This control is used to attenuate samples from left and right I2S ADC | 
|  | inputs (on the AudigyDrive). The result samples are forwarded to the ADC | 
|  | capture FIFO (thus to the standard capture PCM device). | 
|  |  | 
|  | name='Front Playback Volume',index=0 | 
|  |  | 
|  | All stereo signals are mixed together and mirrored to surround, center and LFE. | 
|  | This control is used to attenuate samples for left and right front speakers of | 
|  | this mix. | 
|  |  | 
|  | name='Surround Playback Volume',index=0 | 
|  |  | 
|  | All stereo signals are mixed together and mirrored to surround, center and LFE. | 
|  | This control is used to attenuate samples for left and right surround speakers of | 
|  | this mix. | 
|  |  | 
|  | name='Center Playback Volume',index=0 | 
|  |  | 
|  | All stereo signals are mixed together and mirrored to surround, center and LFE. | 
|  | This control is used to attenuate sample for center speaker of this mix. | 
|  |  | 
|  | name='LFE Playback Volume',index=0 | 
|  |  | 
|  | All stereo signals are mixed together and mirrored to surround, center and LFE. | 
|  | This control is used to attenuate sample for LFE speaker of this mix. | 
|  |  | 
|  | name='Tone Control - Switch',index=0 | 
|  |  | 
|  | This control turns the tone control on or off. The samples for front, rear | 
|  | and center / LFE outputs are affected. | 
|  |  | 
|  | name='Tone Control - Bass',index=0 | 
|  |  | 
|  | This control sets the bass intensity. There is no neutral value!! | 
|  | When the tone control code is activated, the samples are always modified. | 
|  | The closest value to pure signal is 20. | 
|  |  | 
|  | name='Tone Control - Treble',index=0 | 
|  |  | 
|  | This control sets the treble intensity. There is no neutral value!! | 
|  | When the tone control code is activated, the samples are always modified. | 
|  | The closest value to pure signal is 20. | 
|  |  | 
|  | name='Master Playback Volume',index=0 | 
|  |  | 
|  | This control is used to attenuate samples for front, surround, center and | 
|  | LFE outputs. | 
|  |  | 
|  | name='IEC958 Optical Raw Playback Switch',index=0 | 
|  |  | 
|  | If this switch is on, then the samples for the IEC958 (S/PDIF) digital | 
|  | output are taken only from the raw FX8010 PCM, otherwise standard front | 
|  | PCM samples are taken. | 
|  |  | 
|  |  | 
|  | 2) PCM stream related controls | 
|  | ------------------------------ | 
|  |  | 
|  | name='EMU10K1 PCM Volume',index 0-31 | 
|  |  | 
|  | Channel volume attenuation in range 0-0xffff. The maximum value (no | 
|  | attenuation) is default. The channel mapping for three values is | 
|  | as follows: | 
|  |  | 
|  | 0 - mono, default 0xffff (no attenuation) | 
|  | 1 - left, default 0xffff (no attenuation) | 
|  | 2 - right, default 0xffff (no attenuation) | 
|  |  | 
|  | name='EMU10K1 PCM Send Routing',index 0-31 | 
|  |  | 
|  | This control specifies the destination - FX-bus accumulators. There 24 | 
|  | values with this mapping: | 
|  |  | 
|  | 0 -  mono, A destination (FX-bus 0-63), default 0 | 
|  | 1 -  mono, B destination (FX-bus 0-63), default 1 | 
|  | 2 -  mono, C destination (FX-bus 0-63), default 2 | 
|  | 3 -  mono, D destination (FX-bus 0-63), default 3 | 
|  | 4 -  mono, E destination (FX-bus 0-63), default 0 | 
|  | 5 -  mono, F destination (FX-bus 0-63), default 0 | 
|  | 6 -  mono, G destination (FX-bus 0-63), default 0 | 
|  | 7 -  mono, H destination (FX-bus 0-63), default 0 | 
|  | 8 -  left, A destination (FX-bus 0-63), default 0 | 
|  | 9 -  left, B destination (FX-bus 0-63), default 1 | 
|  | 10 -  left, C destination (FX-bus 0-63), default 2 | 
|  | 11 -  left, D destination (FX-bus 0-63), default 3 | 
|  | 12 -  left, E destination (FX-bus 0-63), default 0 | 
|  | 13 -  left, F destination (FX-bus 0-63), default 0 | 
|  | 14 -  left, G destination (FX-bus 0-63), default 0 | 
|  | 15 -  left, H destination (FX-bus 0-63), default 0 | 
|  | 16 - right, A destination (FX-bus 0-63), default 0 | 
|  | 17 - right, B destination (FX-bus 0-63), default 1 | 
|  | 18 - right, C destination (FX-bus 0-63), default 2 | 
|  | 19 - right, D destination (FX-bus 0-63), default 3 | 
|  | 20 - right, E destination (FX-bus 0-63), default 0 | 
|  | 21 - right, F destination (FX-bus 0-63), default 0 | 
|  | 22 - right, G destination (FX-bus 0-63), default 0 | 
|  | 23 - right, H destination (FX-bus 0-63), default 0 | 
|  |  | 
|  | Don't forget that it's illegal to assign a channel to the same FX-bus accumulator | 
|  | more than once (it means 0=0 && 1=0 is an invalid combination). | 
|  |  | 
|  | name='EMU10K1 PCM Send Volume',index 0-31 | 
|  |  | 
|  | It specifies the attenuation (amount) for given destination in range 0-255. | 
|  | The channel mapping is following: | 
|  |  | 
|  | 0 -  mono, A destination attn, default 255 (no attenuation) | 
|  | 1 -  mono, B destination attn, default 255 (no attenuation) | 
|  | 2 -  mono, C destination attn, default 0 (mute) | 
|  | 3 -  mono, D destination attn, default 0 (mute) | 
|  | 4 -  mono, E destination attn, default 0 (mute) | 
|  | 5 -  mono, F destination attn, default 0 (mute) | 
|  | 6 -  mono, G destination attn, default 0 (mute) | 
|  | 7 -  mono, H destination attn, default 0 (mute) | 
|  | 8 -  left, A destination attn, default 255 (no attenuation) | 
|  | 9 -  left, B destination attn, default 0 (mute) | 
|  | 10 -  left, C destination attn, default 0 (mute) | 
|  | 11 -  left, D destination attn, default 0 (mute) | 
|  | 12 -  left, E destination attn, default 0 (mute) | 
|  | 13 -  left, F destination attn, default 0 (mute) | 
|  | 14 -  left, G destination attn, default 0 (mute) | 
|  | 15 -  left, H destination attn, default 0 (mute) | 
|  | 16 - right, A destination attn, default 0 (mute) | 
|  | 17 - right, B destination attn, default 255 (no attenuation) | 
|  | 18 - right, C destination attn, default 0 (mute) | 
|  | 19 - right, D destination attn, default 0 (mute) | 
|  | 20 - right, E destination attn, default 0 (mute) | 
|  | 21 - right, F destination attn, default 0 (mute) | 
|  | 22 - right, G destination attn, default 0 (mute) | 
|  | 23 - right, H destination attn, default 0 (mute) | 
|  |  | 
|  |  | 
|  |  | 
|  | 4) MANUALS/PATENTS: | 
|  | ------------------- | 
|  |  | 
|  | ftp://opensource.creative.com/pub/doc | 
|  | ------------------------------------- | 
|  |  | 
|  | Files: | 
|  | LM4545.pdf      AC97 Codec | 
|  |  | 
|  | m2049.pdf       The EMU10K1 Digital Audio Processor | 
|  |  | 
|  | hog63.ps        FX8010 - A DSP Chip Architecture for Audio Effects | 
|  |  | 
|  |  | 
|  | WIPO Patents | 
|  | ------------ | 
|  | Patent numbers: | 
|  | WO 9901813 (A1) Audio Effects Processor with multiple asynchronous (Jan. 14, 1999) | 
|  | streams | 
|  |  | 
|  | WO 9901814 (A1) Processor with Instruction Set for Audio Effects (Jan. 14, 1999) | 
|  |  | 
|  | WO 9901953 (A1) Audio Effects Processor having Decoupled Instruction | 
|  | Execution and Audio Data Sequencing (Jan. 14, 1999) | 
|  |  | 
|  |  | 
|  | US Patents (http://www.uspto.gov/) | 
|  | ---------------------------------- | 
|  |  | 
|  | US 5925841      Digital Sampling Instrument employing cache memory (Jul. 20, 1999) | 
|  |  | 
|  | US 5928342      Audio Effects Processor integrated on a single chip (Jul. 27, 1999) | 
|  | with a multiport memory onto which multiple asynchronous | 
|  | digital sound samples can be concurrently loaded | 
|  |  | 
|  | US 5930158      Processor with Instruction Set for Audio Effects (Jul. 27, 1999) | 
|  |  | 
|  | US 6032235      Memory initialization circuit (Tram) (Feb. 29, 2000) | 
|  |  | 
|  | US 6138207      Interpolation looping of audio samples in cache connected to    (Oct. 24, 2000) | 
|  | system bus with prioritization and modification of bus transfers | 
|  | in accordance with loop ends and minimum block sizes | 
|  |  | 
|  | US 6151670      Method for conserving memory storage using a (Nov. 21, 2000) | 
|  | pool of  short term memory registers | 
|  |  | 
|  | US 6195715      Interrupt control for multiple programs communicating with      (Feb. 27, 2001) | 
|  | a common interrupt by associating programs to GP registers, | 
|  | defining interrupt register, polling GP registers, and invoking | 
|  | callback routine associated with defined interrupt register |