162306a36Sopenharmony_ci=============================================
262306a36Sopenharmony_ciSound Blaster Audigy mixer / default DSP code
362306a36Sopenharmony_ci=============================================
462306a36Sopenharmony_ci
562306a36Sopenharmony_ciThis is based on sb-live-mixer.rst.
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciThe EMU10K2 chips have a DSP part which can be programmed to support 
862306a36Sopenharmony_civarious ways of sample processing, which is described here.
962306a36Sopenharmony_ci(This article does not deal with the overall functionality of the 
1062306a36Sopenharmony_ciEMU10K2 chips. See the manuals section for further details.)
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciThe ALSA driver programs this portion of chip by default code
1362306a36Sopenharmony_ci(can be altered later) which offers the following functionality:
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciDigital mixer controls
1762306a36Sopenharmony_ci======================
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciThese controls are built using the DSP instructions. They offer extended
2062306a36Sopenharmony_cifunctionality. Only the default built-in code in the ALSA driver is described
2162306a36Sopenharmony_cihere. Note that the controls work as attenuators: the maximum value is the 
2262306a36Sopenharmony_cineutral position leaving the signal unchanged. Note that if the same destination
2362306a36Sopenharmony_ciis mentioned in multiple controls, the signal is accumulated and can be clipped
2462306a36Sopenharmony_ci(set to maximal or minimal value without checking for overflow).
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ciExplanation of used abbreviations:
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ciDAC
3062306a36Sopenharmony_ci	digital to analog converter
3162306a36Sopenharmony_ciADC
3262306a36Sopenharmony_ci	analog to digital converter
3362306a36Sopenharmony_ciI2S
3462306a36Sopenharmony_ci	one-way three wire serial bus for digital sound by Philips Semiconductors
3562306a36Sopenharmony_ci	(this standard is used for connecting standalone D/A and A/D converters)
3662306a36Sopenharmony_ciLFE
3762306a36Sopenharmony_ci	low frequency effects (used as subwoofer signal)
3862306a36Sopenharmony_ciAC97
3962306a36Sopenharmony_ci	a chip containing an analog mixer, D/A and A/D converters
4062306a36Sopenharmony_ciIEC958
4162306a36Sopenharmony_ci	S/PDIF
4262306a36Sopenharmony_ciFX-bus
4362306a36Sopenharmony_ci	the EMU10K2 chip has an effect bus containing 64 accumulators.
4462306a36Sopenharmony_ci	Each of the synthesizer voices can feed its output to these accumulators
4562306a36Sopenharmony_ci	and the DSP microcontroller can operate with the resulting sum.
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ciname='PCM Front Playback Volume',index=0
4862306a36Sopenharmony_ci----------------------------------------
4962306a36Sopenharmony_ciThis control is used to attenuate samples from left and right front PCM FX-bus
5062306a36Sopenharmony_ciaccumulators. ALSA uses accumulators 8 and 9 for left and right front PCM 
5162306a36Sopenharmony_cisamples for 5.1 playback. The result samples are forwarded to the front speakers.
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ciname='PCM Surround Playback Volume',index=0
5462306a36Sopenharmony_ci-------------------------------------------
5562306a36Sopenharmony_ciThis control is used to attenuate samples from left and right surround PCM FX-bus
5662306a36Sopenharmony_ciaccumulators. ALSA uses accumulators 2 and 3 for left and right surround PCM 
5762306a36Sopenharmony_cisamples for 5.1 playback. The result samples are forwarded to the surround (rear)
5862306a36Sopenharmony_cispeakers.
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciname='PCM Side Playback Volume',index=0
6162306a36Sopenharmony_ci---------------------------------------
6262306a36Sopenharmony_ciThis control is used to attenuate samples from left and right side PCM FX-bus
6362306a36Sopenharmony_ciaccumulators. ALSA uses accumulators 14 and 15 for left and right side PCM
6462306a36Sopenharmony_cisamples for 7.1 playback. The result samples are forwarded to the side speakers.
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ciname='PCM Center Playback Volume',index=0
6762306a36Sopenharmony_ci-----------------------------------------
6862306a36Sopenharmony_ciThis control is used to attenuate samples from center PCM FX-bus accumulator.
6962306a36Sopenharmony_ciALSA uses accumulator 6 for center PCM samples for 5.1 playback. The result
7062306a36Sopenharmony_cisamples are forwarded to the center speaker.
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ciname='PCM LFE Playback Volume',index=0
7362306a36Sopenharmony_ci--------------------------------------
7462306a36Sopenharmony_ciThis control is used to attenuate sample for LFE PCM FX-bus accumulator. 
7562306a36Sopenharmony_ciALSA uses accumulator 7 for LFE PCM samples for 5.1 playback. The result
7662306a36Sopenharmony_cisamples are forwarded to the subwoofer.
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciname='PCM Playback Volume',index=0
7962306a36Sopenharmony_ci----------------------------------
8062306a36Sopenharmony_ciThis control is used to attenuate samples from left and right PCM FX-bus
8162306a36Sopenharmony_ciaccumulators. ALSA uses accumulators 0 and 1 for left and right PCM samples for
8262306a36Sopenharmony_cistereo playback. The result samples are forwarded to the front speakers.
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ciname='PCM Capture Volume',index=0
8562306a36Sopenharmony_ci---------------------------------
8662306a36Sopenharmony_ciThis control is used to attenuate samples from left and right PCM FX-bus
8762306a36Sopenharmony_ciaccumulators. ALSA uses accumulators 0 and 1 for left and right PCM samples for
8862306a36Sopenharmony_cistereo playback. The result is forwarded to the standard capture PCM device.
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ciname='Music Playback Volume',index=0
9162306a36Sopenharmony_ci------------------------------------
9262306a36Sopenharmony_ciThis control is used to attenuate samples from left and right MIDI FX-bus
9362306a36Sopenharmony_ciaccumulators. ALSA uses accumulators 4 and 5 for left and right MIDI samples.
9462306a36Sopenharmony_ciThe result samples are forwarded to the virtual stereo mixer.
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ciname='Music Capture Volume',index=0
9762306a36Sopenharmony_ci-----------------------------------
9862306a36Sopenharmony_ciThese controls are used to attenuate samples from left and right MIDI FX-bus
9962306a36Sopenharmony_ciaccumulator. ALSA uses accumulators 4 and 5 for left and right MIDI samples.
10062306a36Sopenharmony_ciThe result is forwarded to the standard capture PCM device.
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ciname='Mic Playback Volume',index=0
10362306a36Sopenharmony_ci----------------------------------
10462306a36Sopenharmony_ciThis control is used to attenuate samples from left and right Mic input of
10562306a36Sopenharmony_cithe AC97 codec. The result samples are forwarded to the virtual stereo mixer.
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ciname='Mic Capture Volume',index=0
10862306a36Sopenharmony_ci---------------------------------
10962306a36Sopenharmony_ciThis control is used to attenuate samples from left and right Mic input of
11062306a36Sopenharmony_cithe AC97 codec. The result is forwarded to the standard capture PCM device.
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ciThe original samples are also forwarded to the Mic capture PCM device (device 1;
11362306a36Sopenharmony_ci16bit/8KHz mono) without volume control.
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ciname='Audigy CD Playback Volume',index=0
11662306a36Sopenharmony_ci----------------------------------------
11762306a36Sopenharmony_ciThis control is used to attenuate samples from left and right IEC958 TTL
11862306a36Sopenharmony_cidigital inputs (usually used by a CDROM drive). The result samples are
11962306a36Sopenharmony_ciforwarded to the virtual stereo mixer.
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ciname='Audigy CD Capture Volume',index=0
12262306a36Sopenharmony_ci---------------------------------------
12362306a36Sopenharmony_ciThis control is used to attenuate samples from left and right IEC958 TTL
12462306a36Sopenharmony_cidigital inputs (usually used by a CDROM drive). The result is forwarded
12562306a36Sopenharmony_cito the standard capture PCM device.
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ciname='IEC958 Optical Playback Volume',index=0
12862306a36Sopenharmony_ci---------------------------------------------
12962306a36Sopenharmony_ciThis control is used to attenuate samples from left and right IEC958 optical
13062306a36Sopenharmony_cidigital input. The result samples are forwarded to the virtual stereo mixer.
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ciname='IEC958 Optical Capture Volume',index=0
13362306a36Sopenharmony_ci--------------------------------------------
13462306a36Sopenharmony_ciThis control is used to attenuate samples from left and right IEC958 optical
13562306a36Sopenharmony_cidigital inputs. The result is forwarded to the standard capture PCM device.
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ciname='Line2 Playback Volume',index=0
13862306a36Sopenharmony_ci------------------------------------
13962306a36Sopenharmony_ciThis control is used to attenuate samples from left and right I2S ADC
14062306a36Sopenharmony_ciinputs (on the AudigyDrive). The result samples are forwarded to the virtual
14162306a36Sopenharmony_cistereo mixer.
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ciname='Line2 Capture Volume',index=1
14462306a36Sopenharmony_ci-----------------------------------
14562306a36Sopenharmony_ciThis control is used to attenuate samples from left and right I2S ADC
14662306a36Sopenharmony_ciinputs (on the AudigyDrive). The result is forwarded to the standard capture
14762306a36Sopenharmony_ciPCM device.
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ciname='Analog Mix Playback Volume',index=0
15062306a36Sopenharmony_ci-----------------------------------------
15162306a36Sopenharmony_ciThis control is used to attenuate samples from left and right I2S ADC
15262306a36Sopenharmony_ciinputs from Philips ADC. The result samples are forwarded to the virtual
15362306a36Sopenharmony_cistereo mixer. This contains mix from analog sources like CD, Line In, Aux, ....
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ciname='Analog Mix Capture Volume',index=1
15662306a36Sopenharmony_ci----------------------------------------
15762306a36Sopenharmony_ciThis control is used to attenuate samples from left and right I2S ADC
15862306a36Sopenharmony_ciinputs Philips ADC. The result is forwarded to the standard capture PCM device.
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ciname='Aux2 Playback Volume',index=0
16162306a36Sopenharmony_ci-----------------------------------
16262306a36Sopenharmony_ciThis control is used to attenuate samples from left and right I2S ADC
16362306a36Sopenharmony_ciinputs (on the AudigyDrive). The result samples are forwarded to the virtual
16462306a36Sopenharmony_cistereo mixer.
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_ciname='Aux2 Capture Volume',index=1
16762306a36Sopenharmony_ci----------------------------------
16862306a36Sopenharmony_ciThis control is used to attenuate samples from left and right I2S ADC
16962306a36Sopenharmony_ciinputs (on the AudigyDrive). The result is forwarded to the standard capture
17062306a36Sopenharmony_ciPCM device.
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ciname='Front Playback Volume',index=0
17362306a36Sopenharmony_ci------------------------------------
17462306a36Sopenharmony_ciThis control is used to attenuate samples from the virtual stereo mixer.
17562306a36Sopenharmony_ciThe result samples are forwarded to the front speakers.
17662306a36Sopenharmony_ci
17762306a36Sopenharmony_ciname='Surround Playback Volume',index=0
17862306a36Sopenharmony_ci---------------------------------------
17962306a36Sopenharmony_ciThis control is used to attenuate samples from the virtual stereo mixer.
18062306a36Sopenharmony_ciThe result samples are forwarded to the surround (rear) speakers.
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ciname='Side Playback Volume',index=0
18362306a36Sopenharmony_ci-----------------------------------
18462306a36Sopenharmony_ciThis control is used to attenuate samples from the virtual stereo mixer.
18562306a36Sopenharmony_ciThe result samples are forwarded to the side speakers.
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ciname='Center Playback Volume',index=0
18862306a36Sopenharmony_ci-------------------------------------
18962306a36Sopenharmony_ciThis control is used to attenuate samples from the virtual stereo mixer.
19062306a36Sopenharmony_ciThe result samples are forwarded to the center speaker.
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ciname='LFE Playback Volume',index=0
19362306a36Sopenharmony_ci----------------------------------
19462306a36Sopenharmony_ciThis control is used to attenuate samples from the virtual stereo mixer.
19562306a36Sopenharmony_ciThe result samples are forwarded to the subwoofer.
19662306a36Sopenharmony_ci
19762306a36Sopenharmony_ciname='Tone Control - Switch',index=0
19862306a36Sopenharmony_ci------------------------------------
19962306a36Sopenharmony_ciThis control turns the tone control on or off. The samples forwarded to
20062306a36Sopenharmony_cithe speaker outputs are affected.
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ciname='Tone Control - Bass',index=0
20362306a36Sopenharmony_ci----------------------------------
20462306a36Sopenharmony_ciThis control sets the bass intensity. There is no neutral value!!
20562306a36Sopenharmony_ciWhen the tone control code is activated, the samples are always modified.
20662306a36Sopenharmony_ciThe closest value to pure signal is 20.
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ciname='Tone Control - Treble',index=0
20962306a36Sopenharmony_ci------------------------------------
21062306a36Sopenharmony_ciThis control sets the treble intensity. There is no neutral value!!
21162306a36Sopenharmony_ciWhen the tone control code is activated, the samples are always modified.
21262306a36Sopenharmony_ciThe closest value to pure signal is 20.
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ciname='Master Playback Volume',index=0
21562306a36Sopenharmony_ci-------------------------------------
21662306a36Sopenharmony_ciThis control is used to attenuate samples forwarded to the speaker outputs.
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ciname='IEC958 Optical Raw Playback Switch',index=0
21962306a36Sopenharmony_ci-------------------------------------------------
22062306a36Sopenharmony_ciIf this switch is on, then the samples for the IEC958 (S/PDIF) digital
22162306a36Sopenharmony_cioutput are taken only from the raw iec958 ALSA PCM device (which uses
22262306a36Sopenharmony_ciaccumulators 20 and 21 for left and right PCM by default).
22362306a36Sopenharmony_ci
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_ciPCM stream related controls
22662306a36Sopenharmony_ci===========================
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_ciname='EMU10K1 PCM Volume',index 0-31
22962306a36Sopenharmony_ci------------------------------------
23062306a36Sopenharmony_ciChannel volume attenuation in range 0-0x1fffd. The middle value (no
23162306a36Sopenharmony_ciattenuation) is default. The channel mapping for three values is
23262306a36Sopenharmony_cias follows:
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ci* 0 - mono, default 0xffff (no attenuation)
23562306a36Sopenharmony_ci* 1 - left, default 0xffff (no attenuation)
23662306a36Sopenharmony_ci* 2 - right, default 0xffff (no attenuation)
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ciname='EMU10K1 PCM Send Routing',index 0-31
23962306a36Sopenharmony_ci------------------------------------------
24062306a36Sopenharmony_ciThis control specifies the destination - FX-bus accumulators. There are 24
24162306a36Sopenharmony_civalues in this mapping:
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ci*  0 -  mono, A destination (FX-bus 0-63), default 0
24462306a36Sopenharmony_ci*  1 -  mono, B destination (FX-bus 0-63), default 1
24562306a36Sopenharmony_ci*  2 -  mono, C destination (FX-bus 0-63), default 2
24662306a36Sopenharmony_ci*  3 -  mono, D destination (FX-bus 0-63), default 3
24762306a36Sopenharmony_ci*  4 -  mono, E destination (FX-bus 0-63), default 4
24862306a36Sopenharmony_ci*  5 -  mono, F destination (FX-bus 0-63), default 5
24962306a36Sopenharmony_ci*  6 -  mono, G destination (FX-bus 0-63), default 6
25062306a36Sopenharmony_ci*  7 -  mono, H destination (FX-bus 0-63), default 7
25162306a36Sopenharmony_ci*  8 -  left, A destination (FX-bus 0-63), default 0
25262306a36Sopenharmony_ci*  9 -  left, B destination (FX-bus 0-63), default 1
25362306a36Sopenharmony_ci* 10 -  left, C destination (FX-bus 0-63), default 2
25462306a36Sopenharmony_ci* 11 -  left, D destination (FX-bus 0-63), default 3
25562306a36Sopenharmony_ci* 12 -  left, E destination (FX-bus 0-63), default 4
25662306a36Sopenharmony_ci* 13 -  left, F destination (FX-bus 0-63), default 5
25762306a36Sopenharmony_ci* 14 -  left, G destination (FX-bus 0-63), default 6
25862306a36Sopenharmony_ci* 15 -  left, H destination (FX-bus 0-63), default 7
25962306a36Sopenharmony_ci* 16 - right, A destination (FX-bus 0-63), default 0
26062306a36Sopenharmony_ci* 17 - right, B destination (FX-bus 0-63), default 1
26162306a36Sopenharmony_ci* 18 - right, C destination (FX-bus 0-63), default 2
26262306a36Sopenharmony_ci* 19 - right, D destination (FX-bus 0-63), default 3
26362306a36Sopenharmony_ci* 20 - right, E destination (FX-bus 0-63), default 4
26462306a36Sopenharmony_ci* 21 - right, F destination (FX-bus 0-63), default 5
26562306a36Sopenharmony_ci* 22 - right, G destination (FX-bus 0-63), default 6
26662306a36Sopenharmony_ci* 23 - right, H destination (FX-bus 0-63), default 7
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_ciDon't forget that it's illegal to assign a channel to the same FX-bus accumulator 
26962306a36Sopenharmony_cimore than once (it means 0=0 && 1=0 is an invalid combination).
27062306a36Sopenharmony_ci 
27162306a36Sopenharmony_ciname='EMU10K1 PCM Send Volume',index 0-31
27262306a36Sopenharmony_ci-----------------------------------------
27362306a36Sopenharmony_ciIt specifies the attenuation (amount) for given destination in range 0-255.
27462306a36Sopenharmony_ciThe channel mapping is following:
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ci*  0 -  mono, A destination attn, default 255 (no attenuation)
27762306a36Sopenharmony_ci*  1 -  mono, B destination attn, default 255 (no attenuation)
27862306a36Sopenharmony_ci*  2 -  mono, C destination attn, default 0 (mute)
27962306a36Sopenharmony_ci*  3 -  mono, D destination attn, default 0 (mute)
28062306a36Sopenharmony_ci*  4 -  mono, E destination attn, default 0 (mute)
28162306a36Sopenharmony_ci*  5 -  mono, F destination attn, default 0 (mute)
28262306a36Sopenharmony_ci*  6 -  mono, G destination attn, default 0 (mute)
28362306a36Sopenharmony_ci*  7 -  mono, H destination attn, default 0 (mute)
28462306a36Sopenharmony_ci*  8 -  left, A destination attn, default 255 (no attenuation)
28562306a36Sopenharmony_ci*  9 -  left, B destination attn, default 0 (mute)
28662306a36Sopenharmony_ci* 10 -  left, C destination attn, default 0 (mute)
28762306a36Sopenharmony_ci* 11 -  left, D destination attn, default 0 (mute)
28862306a36Sopenharmony_ci* 12 -  left, E destination attn, default 0 (mute)
28962306a36Sopenharmony_ci* 13 -  left, F destination attn, default 0 (mute)
29062306a36Sopenharmony_ci* 14 -  left, G destination attn, default 0 (mute)
29162306a36Sopenharmony_ci* 15 -  left, H destination attn, default 0 (mute)
29262306a36Sopenharmony_ci* 16 - right, A destination attn, default 0 (mute)
29362306a36Sopenharmony_ci* 17 - right, B destination attn, default 255 (no attenuation)
29462306a36Sopenharmony_ci* 18 - right, C destination attn, default 0 (mute)
29562306a36Sopenharmony_ci* 19 - right, D destination attn, default 0 (mute)
29662306a36Sopenharmony_ci* 20 - right, E destination attn, default 0 (mute)
29762306a36Sopenharmony_ci* 21 - right, F destination attn, default 0 (mute)
29862306a36Sopenharmony_ci* 22 - right, G destination attn, default 0 (mute)
29962306a36Sopenharmony_ci* 23 - right, H destination attn, default 0 (mute)
30062306a36Sopenharmony_ci
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_ci
30362306a36Sopenharmony_ciMANUALS/PATENTS
30462306a36Sopenharmony_ci===============
30562306a36Sopenharmony_ci
30662306a36Sopenharmony_ciSee sb-live-mixer.rst.
307