Blame ld10k1/doc/Audigy-mixer.txt

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