123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368 |
- =============================================
- Sound Blaster Audigy mixer / default DSP code
- =============================================
- This is based on sb-live-mixer.rst.
- 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:
- 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.
- 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)
- MANUALS/PATENTS
- ===============
- ftp://opensource.creative.com/pub/doc
- -------------------------------------
- LM4545.pdf
- AC97 Codec
- m2049.pdf
- The EMU10K1 Digital Audio Processor
- hog63.ps
- FX8010 - A DSP Chip Architecture for Audio Effects
- WIPO Patents
- ------------
- WO 9901813 (A1)
- Audio Effects Processor with multiple asynchronous streams
- (Jan. 14, 1999)
- 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 (https://www.uspto.gov/)
- -----------------------------------
- US 5925841
- Digital Sampling Instrument employing cache memory (Jul. 20, 1999)
- US 5928342
- Audio Effects Processor integrated on a single chip
- with a multiport memory onto which multiple asynchronous
- digital sound samples can be concurrently loaded
- (Jul. 27, 1999)
- 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
- system bus with prioritization and modification of bus transfers
- in accordance with loop ends and minimum block sizes
- (Oct. 24, 2000)
- US 6151670
- Method for conserving memory storage using a
- pool of short term memory registers
- (Nov. 21, 2000)
- US 6195715
- Interrupt control for multiple programs communicating with
- a common interrupt by associating programs to GP registers,
- defining interrupt register, polling GP registers, and invoking
- callback routine associated with defined interrupt register
- (Feb. 27, 2001)
|