← Documents Documentation/sound/cards/sb-live-mixer.rst GitHub 원문 ↗

Linux 6.18.37 · Sound

Sound Blaster Live 믹서와 기본 DSP 코드

EMU10K1 기본 DSP 코드의 IEC958 raw PCM, Wave·Synth·Surround·AC97·디지털 입력 라우팅과 PCM A~D send, 관련 매뉴얼·특허를 설명합니다.

Source pathDocumentation/sound/cards/sb-live-mixer.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

sb-live-mixer.rst:1-376

EMU10K1 기본 DSP 코드의 IEC958 raw PCM, Wave·Synth·Surround·AC97·디지털 입력 라우팅과 PCM A~D send, 관련 매뉴얼·특허를 설명합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 ===========================================
2 Sound Blaster Live mixer / default DSP code
3 ===========================================
4
5
6 The EMU10K1 chips have a DSP part which can be programmed to support
7 various ways of sample processing, which is described here.
8 (This article does not deal with the overall functionality of the
9 EMU10K1 chips. See the manuals section for further details.)
10
11 The ALSA driver programs this portion of chip by default code
12 (can be altered later) which offers the following functionality:
13
14
15 IEC958 (S/PDIF) raw PCM
16 =======================
17
18 This PCM device (it's the 3rd PCM device (index 2!) and first subdevice
19 (index 0) for a given card) allows to forward 48kHz, stereo, 16-bit
20 little endian streams without any modifications to the digital output
21 (coaxial or optical). The universal interface allows the creation of up
22 to 8 raw PCM devices operating at 48kHz, 16-bit little endian. It would
23 be easy to add support for multichannel devices to the current code,
24 but the conversion routines exist only for stereo (2-channel streams)
25 at the time.
26
27 Look to tram_poke routines in lowlevel/emu10k1/emufx.c for more details.
28
29
30 Digital mixer controls
31 ======================
32
33 These controls are built using the DSP instructions. They offer extended
34 functionality. Only the default built-in code in the ALSA driver is described
35 here. Note that the controls work as attenuators: the maximum value is the
36 neutral position leaving the signal unchanged. Note that if the same destination
37 is mentioned in multiple controls, the signal is accumulated and can be clipped
38 (set to maximal or minimal value without checking for overflow).
39
40
41 Explanation of used abbreviations:
42
43 DAC
44 digital to analog converter
45 ADC
46 analog to digital converter
47 I2S
48 one-way three wire serial bus for digital sound by Philips Semiconductors
49 (this standard is used for connecting standalone D/A and A/D converters)
50 LFE
51 low frequency effects (used as subwoofer signal)
52 AC97
53 a chip containing an analog mixer, D/A and A/D converters
54 IEC958
55 S/PDIF
56 FX-bus
57 the EMU10K1 chip has an effect bus containing 16 accumulators.
58 Each of the synthesizer voices can feed its output to these accumulators
59 and the DSP microcontroller can operate with the resulting sum.
60
61
62 ``name='Wave Playback Volume',index=0``
63 ---------------------------------------
64 This control is used to attenuate samples from left and right PCM FX-bus
65 accumulators. ALSA uses accumulators 0 and 1 for left and right PCM samples.
66 The result samples are forwarded to the front DAC PCM slots of the AC97 codec.
67
68 ``name='Wave Surround Playback Volume',index=0``
69 ------------------------------------------------
70 This control is used to attenuate samples from left and right PCM FX-bus
71 accumulators. ALSA uses accumulators 0 and 1 for left and right PCM samples.
72 The result samples are forwarded to the rear I2S DACs. These DACs operates
73 separately (they are not inside the AC97 codec).
74
75 ``name='Wave Center Playback Volume',index=0``
76 ----------------------------------------------
77 This control is used to attenuate samples from left and right PCM FX-bus
78 accumulators. ALSA uses accumulators 0 and 1 for left and right PCM samples.
79 The result is mixed to mono signal (single channel) and forwarded to
80 the ??rear?? right DAC PCM slot of the AC97 codec.
81
82 ``name='Wave LFE Playback Volume',index=0``
83 -------------------------------------------
84 This control is used to attenuate samples from left and right PCM FX-bus
85 accumulators. ALSA uses accumulators 0 and 1 for left and right PCM.
86 The result is mixed to mono signal (single channel) and forwarded to
87 the ??rear?? left DAC PCM slot of the AC97 codec.
88
89 ``name='Wave Capture Volume',index=0``, ``name='Wave Capture Switch',index=0``
90 ------------------------------------------------------------------------------
91 These controls are used to attenuate samples from left and right PCM FX-bus
92 accumulator. ALSA uses accumulators 0 and 1 for left and right PCM.
93 The result is forwarded to the ADC capture FIFO (thus to the standard capture
94 PCM device).
95
96 ``name='Synth Playback Volume',index=0``
97 ----------------------------------------
98 This control is used to attenuate samples from left and right MIDI FX-bus
99 accumulators. ALSA uses accumulators 4 and 5 for left and right MIDI samples.
100 The result samples are forwarded to the front DAC PCM slots of the AC97 codec.
101
102 ``name='Synth Capture Volume',index=0``, ``name='Synth Capture Switch',index=0``
103 --------------------------------------------------------------------------------
104 These controls are used to attenuate samples from left and right MIDI FX-bus
105 accumulator. ALSA uses accumulators 4 and 5 for left and right MIDI samples.
106 The result is forwarded to the ADC capture FIFO (thus to the standard capture
107 PCM device).
108
109 ``name='Surround Playback Volume',index=0``
110 -------------------------------------------
111 This control is used to attenuate samples from left and right rear PCM FX-bus
112 accumulators. ALSA uses accumulators 2 and 3 for left and right rear PCM samples.
113 The result samples are forwarded to the rear I2S DACs. These DACs operate
114 separately (they are not inside the AC97 codec).
115
116 ``name='Surround Capture Volume',index=0``, ``name='Surround Capture Switch',index=0``
117 --------------------------------------------------------------------------------------
118 These controls are used to attenuate samples from left and right rear PCM FX-bus
119 accumulators. ALSA uses accumulators 2 and 3 for left and right rear PCM samples.
120 The result is forwarded to the ADC capture FIFO (thus to the standard capture
121 PCM device).
122
123 ``name='Center Playback Volume',index=0``
124 -----------------------------------------
125 This control is used to attenuate sample for center PCM FX-bus accumulator.
126 ALSA uses accumulator 6 for center PCM sample. The result sample is forwarded
127 to the ??rear?? right DAC PCM slot of the AC97 codec.
128
129 ``name='LFE Playback Volume',index=0``
130 --------------------------------------
131 This control is used to attenuate sample for center PCM FX-bus accumulator.
132 ALSA uses accumulator 6 for center PCM sample. The result sample is forwarded
133 to the ??rear?? left DAC PCM slot of the AC97 codec.
134
135 ``name='AC97 Playback Volume',index=0``
136 ---------------------------------------
137 This control is used to attenuate samples from left and right front ADC PCM slots
138 of the AC97 codec. The result samples are forwarded to the front DAC PCM
139 slots of the AC97 codec.
140
141 .. note::
142 This control should be zero for the standard operations, otherwise
143 a digital loopback is activated.
144
145
146 ``name='AC97 Capture Volume',index=0``
147 --------------------------------------
148 This control is used to attenuate samples from left and right front ADC PCM slots
149 of the AC97 codec. The result is forwarded to the ADC capture FIFO (thus to
150 the standard capture PCM device).
151
152 .. note::
153 This control should be 100 (maximal value), otherwise no analog
154 inputs of the AC97 codec can be captured (recorded).
155
156 ``name='IEC958 TTL Playback Volume',index=0``
157 ---------------------------------------------
158 This control is used to attenuate samples from left and right IEC958 TTL
159 digital inputs (usually used by a CDROM drive). The result samples are
160 forwarded to the front DAC PCM slots of the AC97 codec.
161
162 ``name='IEC958 TTL Capture Volume',index=0``
163 --------------------------------------------
164 This control is used to attenuate samples from left and right IEC958 TTL
165 digital inputs (usually used by a CDROM drive). The result samples are
166 forwarded to the ADC capture FIFO (thus to the standard capture PCM device).
167
168 ``name='Zoom Video Playback Volume',index=0``
169 ---------------------------------------------
170 This control is used to attenuate samples from left and right zoom video
171 digital inputs (usually used by a CDROM drive). The result samples are
172 forwarded to the front DAC PCM slots of the AC97 codec.
173
174 ``name='Zoom Video Capture Volume',index=0``
175 --------------------------------------------
176 This control is used to attenuate samples from left and right zoom video
177 digital inputs (usually used by a CDROM drive). The result samples are
178 forwarded to the ADC capture FIFO (thus to the standard capture PCM device).
179
180 ``name='IEC958 LiveDrive Playback Volume',index=0``
181 ---------------------------------------------------
182 This control is used to attenuate samples from left and right IEC958 optical
183 digital input. The result samples are forwarded to the front DAC PCM slots
184 of the AC97 codec.
185
186 ``name='IEC958 LiveDrive Capture Volume',index=0``
187 --------------------------------------------------
188 This control is used to attenuate samples from left and right IEC958 optical
189 digital inputs. The result samples are forwarded to the ADC capture FIFO
190 (thus to the standard capture PCM device).
191
192 ``name='IEC958 Coaxial Playback Volume',index=0``
193 -------------------------------------------------
194 This control is used to attenuate samples from left and right IEC958 coaxial
195 digital inputs. The result samples are forwarded to the front DAC PCM slots
196 of the AC97 codec.
197
198 ``name='IEC958 Coaxial Capture Volume',index=0``
199 ------------------------------------------------
200 This control is used to attenuate samples from left and right IEC958 coaxial
201 digital inputs. The result samples are forwarded to the ADC capture FIFO
202 (thus to the standard capture PCM device).
203
204 ``name='Line LiveDrive Playback Volume',index=0``, ``name='Line LiveDrive Playback Volume',index=1``
205 ----------------------------------------------------------------------------------------------------
206 This control is used to attenuate samples from left and right I2S ADC
207 inputs (on the LiveDrive). The result samples are forwarded to the front
208 DAC PCM slots of the AC97 codec.
209
210 ``name='Line LiveDrive Capture Volume',index=1``, ``name='Line LiveDrive Capture Volume',index=1``
211 --------------------------------------------------------------------------------------------------
212 This control is used to attenuate samples from left and right I2S ADC
213 inputs (on the LiveDrive). The result samples are forwarded to the ADC
214 capture FIFO (thus to the standard capture PCM device).
215
216 ``name='Tone Control - Switch',index=0``
217 ----------------------------------------
218 This control turns the tone control on or off. The samples for front, rear
219 and center / LFE outputs are affected.
220
221 ``name='Tone Control - Bass',index=0``
222 --------------------------------------
223 This control sets the bass intensity. There is no neutral value!!
224 When the tone control code is activated, the samples are always modified.
225 The closest value to pure signal is 20.
226
227 ``name='Tone Control - Treble',index=0``
228 ----------------------------------------
229 This control sets the treble intensity. There is no neutral value!!
230 When the tone control code is activated, the samples are always modified.
231 The closest value to pure signal is 20.
232
233 ``name='IEC958 Optical Raw Playback Switch',index=0``
234 -----------------------------------------------------
235 If this switch is on, then the samples for the IEC958 (S/PDIF) digital
236 output are taken only from the raw FX8010 PCM, otherwise standard front
237 PCM samples are taken.
238
239 ``name='Headphone Playback Volume',index=1``
240 --------------------------------------------
241 This control attenuates the samples for the headphone output.
242
243 ``name='Headphone Center Playback Switch',index=1``
244 ---------------------------------------------------
245 If this switch is on, then the sample for the center PCM is put to the
246 left headphone output (useful for SB Live cards without separate center/LFE
247 output).
248
249 ``name='Headphone LFE Playback Switch',index=1``
250 ------------------------------------------------
251 If this switch is on, then the sample for the center PCM is put to the
252 right headphone output (useful for SB Live cards without separate center/LFE
253 output).
254
255
256 PCM stream related controls
257 ===========================
258
259 ``name='EMU10K1 PCM Volume',index 0-31``
260 ----------------------------------------
261 Channel volume attenuation in range 0-0x1fffd. The middle value (no
262 attenuation) is default. The channel mapping for three values is
263 as follows:
264
265 * 0 - mono, default 0xffff (no attenuation)
266 * 1 - left, default 0xffff (no attenuation)
267 * 2 - right, default 0xffff (no attenuation)
268
269 ``name='EMU10K1 PCM Send Routing',index 0-31``
270 ----------------------------------------------
271 This control specifies the destination - FX-bus accumulators. There are
272 twelve values with this mapping:
273
274 * 0 - mono, A destination (FX-bus 0-15), default 0
275 * 1 - mono, B destination (FX-bus 0-15), default 1
276 * 2 - mono, C destination (FX-bus 0-15), default 2
277 * 3 - mono, D destination (FX-bus 0-15), default 3
278 * 4 - left, A destination (FX-bus 0-15), default 0
279 * 5 - left, B destination (FX-bus 0-15), default 1
280 * 6 - left, C destination (FX-bus 0-15), default 2
281 * 7 - left, D destination (FX-bus 0-15), default 3
282 * 8 - right, A destination (FX-bus 0-15), default 0
283 * 9 - right, B destination (FX-bus 0-15), default 1
284 * 10 - right, C destination (FX-bus 0-15), default 2
285 * 11 - right, D destination (FX-bus 0-15), default 3
286
287 Don't forget that it's illegal to assign a channel to the same FX-bus accumulator
288 more than once (it means 0=0 && 1=0 is an invalid combination).
289
290 ``name='EMU10K1 PCM Send Volume',index 0-31``
291 ---------------------------------------------
292 It specifies the attenuation (amount) for given destination in range 0-255.
293 The channel mapping is following:
294
295 * 0 - mono, A destination attn, default 255 (no attenuation)
296 * 1 - mono, B destination attn, default 255 (no attenuation)
297 * 2 - mono, C destination attn, default 0 (mute)
298 * 3 - mono, D destination attn, default 0 (mute)
299 * 4 - left, A destination attn, default 255 (no attenuation)
300 * 5 - left, B destination attn, default 0 (mute)
301 * 6 - left, C destination attn, default 0 (mute)
302 * 7 - left, D destination attn, default 0 (mute)
303 * 8 - right, A destination attn, default 0 (mute)
304 * 9 - right, B destination attn, default 255 (no attenuation)
305 * 10 - right, C destination attn, default 0 (mute)
306 * 11 - right, D destination attn, default 0 (mute)
307
308
309
310 MANUALS/PATENTS
311 ===============
312
313 ftp://opensource.creative.com/pub/doc
314 -------------------------------------
315
316 Note that the site is defunct, but the documents are available
317 from various other locations.
318
319 LM4545.pdf
320 AC97 Codec
321 m2049.pdf
322 The EMU10K1 Digital Audio Processor
323 hog63.ps
324 FX8010 - A DSP Chip Architecture for Audio Effects
325
326
327 WIPO Patents
328 ------------
329
330 WO 9901813 (A1)
331 Audio Effects Processor with multiple asynchronous streams
332 (Jan. 14, 1999)
333
334 WO 9901814 (A1)
335 Processor with Instruction Set for Audio Effects (Jan. 14, 1999)
336
337 WO 9901953 (A1)
338 Audio Effects Processor having Decoupled Instruction
339 Execution and Audio Data Sequencing (Jan. 14, 1999)
340
341
342 US Patents (https://www.uspto.gov/)
343 -----------------------------------
344
345 US 5925841
346 Digital Sampling Instrument employing cache memory (Jul. 20, 1999)
347
348 US 5928342
349 Audio Effects Processor integrated on a single chip
350 with a multiport memory onto which multiple asynchronous
351 digital sound samples can be concurrently loaded
352 (Jul. 27, 1999)
353
354 US 5930158
355 Processor with Instruction Set for Audio Effects (Jul. 27, 1999)
356
357 US 6032235
358 Memory initialization circuit (Tram) (Feb. 29, 2000)
359
360 US 6138207
361 Interpolation looping of audio samples in cache connected to
362 system bus with prioritization and modification of bus transfers
363 in accordance with loop ends and minimum block sizes
364 (Oct. 24, 2000)
365
366 US 6151670
367 Method for conserving memory storage using a
368 pool of short term memory registers
369 (Nov. 21, 2000)
370
371 US 6195715
372 Interrupt control for multiple programs communicating with
373 a common interrupt by associating programs to GP registers,
374 defining interrupt register, polling GP registers, and invoking
375 callback routine associated with defined interrupt register
376 (Feb. 27, 2001)
377

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

EMU10K1 DSP, raw IEC958와 Wave 경로

1-95

EMU10K1 칩에는 다양한 표본 처리 방식을 프로그램할 수 있는 DSP가 있다. 이 문서는 칩 전체 기능이 아니라 ALSA 드라이버가 기본 코드로 프로그램하는 DSP 부분만 다룬다. 기본 코드는 나중에 변경할 수 있다.

IEC958(S/PDIF) raw PCM은 카드의 세 번째 PCM 장치(index 2), 첫 번째 subdevice(index 0)다. 48kHz stereo 16-bit little-endian 스트림을 수정 없이 동축 또는 광 디지털 출력으로 보낸다. 범용 인터페이스는 같은 형식의 raw PCM 장치를 최대 8개 만들 수 있다. 다중 채널 지원은 쉽게 추가할 수 있지만 당시 변환 routine은 stereo 2채널만 있었다. 자세한 내용은 `lowlevel/emu10k1/emufx.c`의 `tram_poke` routine을 본다.

SBLive raw IEC958 PCM
항목
PCM 장치index 2, subdevice 0
표본률48kHz
채널stereo 2
형식16-bit little-endian
출력coaxial 또는 optical
raw 장치 수최대 8

디지털 출력으로 수정 없이 전달되는 장치 형식이다.

디지털 믹서 제어는 DSP instruction으로 만들며 기본 내장 코드만 설명한다. 모든 제어는 감쇠기로 동작해 최댓값이 신호를 바꾸지 않는 중립 위치다. 같은 목적지로 여러 제어가 보내면 신호가 누적되고 오버플로 검사 없이 최대·최소값으로 잘려 클리핑될 수 있다.

DAC는 digital-to-analog converter, ADC는 analog-to-digital converter, I2S는 Philips Semiconductors의 단방향 3선 디지털 사운드 직렬 버스, LFE는 subwoofer용 low frequency effects, AC97은 analog mixer와 D/A·A/D converter를 포함한 칩, IEC958은 S/PDIF다. EMU10K1 FX-bus에는 accumulator 16개가 있고 신시사이저 음성의 합을 DSP 마이크로컨트롤러가 처리한다.

`Wave Playback Volume`은 PCM accumulator 0/1을 감쇠해 AC97 codec의 front DAC PCM slot으로 보낸다. `Wave Surround Playback Volume`은 같은 0/1을 AC97 밖의 독립 rear I2S DAC로 보낸다. `Wave Center Playback Volume`은 0/1을 mono로 섞어 원문 표현상 AC97의 `??rear??` right DAC PCM slot으로, `Wave LFE Playback Volume`은 `??rear??` left slot으로 보낸다.

`Wave Capture Volume`과 `Wave Capture Switch`는 PCM accumulator 0/1을 ADC capture FIFO, 즉 표준 capture PCM 장치로 보낸다.

Wave FX-bus 라우팅
제어SourceDestination
Wave PlaybackFX 0/1AC97 front DAC
Wave SurroundFX 0/1rear I2S DAC
Wave CenterFX 0/1 monoAC97 ??rear?? right DAC
Wave LFEFX 0/1 monoAC97 ??rear?? left DAC
Wave CaptureFX 0/1ADC capture FIFO

같은 PCM accumulator 0/1이 제어에 따라 여러 목적지로 간다.

===========================================
Sound Blaster Live mixer / default DSP code
===========================================


The EMU10K1 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 
EMU10K1 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:


IEC958 (S/PDIF) raw PCM
=======================

This PCM device (it's the 3rd PCM device (index 2!) and first subdevice
(index 0) for a given card) allows to forward 48kHz, stereo, 16-bit
little endian streams without any modifications to the digital output
(coaxial or optical). The universal interface allows the creation of up
to 8 raw PCM devices operating at 48kHz, 16-bit little endian. It would
be easy to add support for multichannel devices to the current code,
but the conversion routines exist only for stereo (2-channel streams)
at the time. 

Look to tram_poke routines in lowlevel/emu10k1/emufx.c for more details.


Digital mixer controls
======================

These controls are built using the DSP instructions. They offer extended
functionality. Only the default built-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 clipped
(set to maximal or minimal value without checking for 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 D/A and A/D converters)
LFE
        low frequency effects (used as subwoofer signal)
AC97
        a chip containing an analog mixer, D/A and A/D converters
IEC958
        S/PDIF
FX-bus
        the EMU10K1 chip has an effect bus containing 16 accumulators.
        Each of the synthesizer voices can feed its output to these accumulators
        and the DSP microcontroller can operate with the resulting sum.


``name='Wave Playback Volume',index=0``
---------------------------------------
This control is used to attenuate samples from left and right PCM FX-bus
accumulators. ALSA uses accumulators 0 and 1 for left and right PCM samples.
The result samples are forwarded to the front DAC PCM slots of the AC97 codec.

``name='Wave Surround Playback Volume',index=0``
------------------------------------------------
This control is used to attenuate samples from left and right PCM FX-bus
accumulators. ALSA uses accumulators 0 and 1 for left and right PCM samples.
The result samples are forwarded to the rear I2S DACs. These DACs operates
separately (they are not inside the AC97 codec).

``name='Wave Center Playback Volume',index=0``
----------------------------------------------
This control is used to attenuate samples from left and right PCM FX-bus
accumulators. ALSA uses accumulators 0 and 1 for left and right PCM samples.
The result is mixed to mono signal (single channel) and forwarded to
the ??rear?? right DAC PCM slot of the AC97 codec.

``name='Wave LFE Playback Volume',index=0``
-------------------------------------------
This control is used to attenuate samples from left and right PCM FX-bus
accumulators. ALSA uses accumulators 0 and 1 for left and right PCM.
The result is mixed to mono signal (single channel) and forwarded to
the ??rear?? left DAC PCM slot of the AC97 codec.

``name='Wave Capture Volume',index=0``, ``name='Wave Capture Switch',index=0``
------------------------------------------------------------------------------
These controls are used to attenuate samples from 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).

Synth·Surround·Center/LFE와 AC97

96-154

`Synth Playback Volume`은 좌우 MIDI accumulator 4/5를 AC97 front DAC PCM slot으로 보내고, `Synth Capture Volume`과 `Synth Capture Switch`는 같은 4/5를 ADC capture FIFO로 보낸다.

`Surround Playback Volume`은 rear PCM accumulator 2/3을 독립 rear I2S DAC로 보낸다. `Surround Capture Volume`과 `Surround Capture Switch`는 2/3을 ADC capture FIFO로 보낸다. `Center Playback Volume`은 center accumulator 6을 원문상 AC97 `??rear??` right DAC slot으로 보낸다. `LFE Playback Volume` 설명은 원문에서 center accumulator 6을 `??rear??` left DAC slot으로 보낸다고 적혀 있어 그 표현을 그대로 보존한다.

`AC97 Playback Volume`은 AC97 front ADC 좌우 표본을 다시 front DAC slot으로 보내는 디지털 loopback 제어다. 표준 동작에서는 0이어야 하며, 0이 아니면 loopback이 활성화된다.

`AC97 Capture Volume`은 AC97 front ADC 좌우 표본을 표준 capture PCM의 ADC FIFO로 보낸다. 이 값은 100, 즉 최댓값이어야 하며 그렇지 않으면 AC97 codec의 analog input을 녹음할 수 없다.

Synth·Surround·AC97 경로
제어SourceDestination / 필수값
Synth PlaybackFX 4/5AC97 front DAC
Synth CaptureFX 4/5ADC capture FIFO
Surround PlaybackFX 2/3rear I2S DAC
Surround CaptureFX 2/3ADC capture FIFO
Center PlaybackFX 6AC97 ??rear?? right
LFE Playback원문상 FX 6 centerAC97 ??rear?? left
AC97 PlaybackAC97 front ADCfront DAC, 표준값 0
AC97 CaptureAC97 front ADCcapture FIFO, 필수값 100

FX accumulator와 AC97 ADC 경로를 재생·캡처 목적지별로 정리한다.

``name='Synth Playback Volume',index=0``
----------------------------------------
This control is used to attenuate samples from 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='Synth Capture Volume',index=0``, ``name='Synth Capture Switch',index=0``
--------------------------------------------------------------------------------
These controls are used to attenuate samples from left and right MIDI FX-bus
accumulator. ALSA uses accumulators 4 and 5 for left and right MIDI samples.
The result is forwarded to the ADC capture FIFO (thus to the standard capture
PCM device).

``name='Surround Playback Volume',index=0``
-------------------------------------------
This control is used to attenuate samples from left and right rear PCM FX-bus
accumulators. ALSA uses accumulators 2 and 3 for left and right rear PCM samples.
The result samples are forwarded to the rear I2S DACs. These DACs operate
separately (they are not inside the AC97 codec).

``name='Surround Capture Volume',index=0``, ``name='Surround Capture Switch',index=0``
--------------------------------------------------------------------------------------
These controls are used to attenuate samples from left and right rear PCM FX-bus
accumulators. ALSA uses accumulators 2 and 3 for left and right rear PCM samples.
The result is forwarded to the ADC capture FIFO (thus to the standard capture
PCM device).

``name='Center Playback Volume',index=0``
-----------------------------------------
This control is used to attenuate sample for center PCM FX-bus accumulator.
ALSA uses accumulator 6 for center PCM sample. The result sample is forwarded
to the ??rear?? right DAC PCM slot of the AC97 codec.

``name='LFE Playback Volume',index=0``
--------------------------------------
This control is used to attenuate sample for center PCM FX-bus accumulator.
ALSA uses accumulator 6 for center PCM sample. The result sample is forwarded
to the ??rear?? left DAC PCM slot of the AC97 codec.

``name='AC97 Playback Volume',index=0``
---------------------------------------
This control is used to attenuate samples from left and right front ADC PCM slots
of the AC97 codec. The result samples are forwarded to the front DAC PCM
slots of the AC97 codec.

.. note::
  This control should be zero for the standard operations, otherwise
  a digital loopback is activated.


``name='AC97 Capture Volume',index=0``
--------------------------------------
This control is used to attenuate samples from left and right front ADC PCM slots
of the AC97 codec. The result is forwarded to the ADC capture FIFO (thus to
the standard capture PCM device).

.. note::
   This control should be 100 (maximal value), otherwise no analog
   inputs of the AC97 codec can be captured (recorded).

IEC958·Zoom Video·LiveDrive 입력

155-214

`IEC958 TTL Playback Volume`은 보통 CD-ROM이 사용하는 IEC958 TTL 좌우 디지털 입력을 AC97 front DAC로 보내고, `IEC958 TTL Capture Volume`은 ADC capture FIFO로 보낸다.

`Zoom Video Playback Volume`은 보통 CD-ROM이 쓰는 zoom video 좌우 디지털 입력을 AC97 front DAC로 보내며, `Zoom Video Capture Volume`은 같은 입력을 capture FIFO로 보낸다.

`IEC958 LiveDrive Playback Volume`은 광 IEC958 좌우 입력을 AC97 front DAC로, `IEC958 LiveDrive Capture Volume`은 capture FIFO로 보낸다. `IEC958 Coaxial Playback Volume`과 `IEC958 Coaxial Capture Volume`은 동축 IEC958 입력에 같은 두 목적지를 적용한다.

`Line LiveDrive Playback Volume`의 index 0과 1은 LiveDrive의 좌우 I2S ADC 입력을 AC97 front DAC로 보낸다. capture heading은 원문에 `Line LiveDrive Capture Volume,index=1`이 두 번 적혀 있으며, 이 제어는 같은 I2S ADC 입력을 ADC capture FIFO로 보낸다.

SBLive 디지털·I2S 입력
입력Playback destinationCapture destination
IEC958 TTLAC97 front DACADC capture FIFO
Zoom VideoAC97 front DACADC capture FIFO
IEC958 LiveDrive opticalAC97 front DACADC capture FIFO
IEC958 CoaxialAC97 front DACADC capture FIFO
Line LiveDrive I2S ADCAC97 front DACADC capture FIFO; 원문 index=1 중복

입력 유형별 playback과 capture 목적지다.


``name='IEC958 TTL 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 AC97 codec.

``name='IEC958 TTL 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='Zoom Video Playback Volume',index=0``
---------------------------------------------
This control is used to attenuate samples from left and right zoom video
digital inputs (usually used by a CDROM drive). The result samples are
forwarded to the front DAC PCM slots of the AC97 codec.

``name='Zoom Video Capture Volume',index=0``
--------------------------------------------
This control is used to attenuate samples from left and right zoom video
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 LiveDrive 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 AC97 codec.

``name='IEC958 LiveDrive 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='IEC958 Coaxial Playback Volume',index=0``
-------------------------------------------------
This control is used to attenuate samples from left and right IEC958 coaxial
digital inputs. The result samples are forwarded to the front DAC PCM slots
of the AC97 codec.

``name='IEC958 Coaxial Capture Volume',index=0``
------------------------------------------------
This control is used to attenuate samples from left and right IEC958 coaxial
digital inputs. The result samples are forwarded to the ADC capture FIFO
(thus to the standard capture PCM device).

``name='Line LiveDrive Playback Volume',index=0``, ``name='Line LiveDrive Playback Volume',index=1``
----------------------------------------------------------------------------------------------------
This control is used to attenuate samples from left and right I2S ADC
inputs (on the LiveDrive). The result samples are forwarded to the front
DAC PCM slots of the AC97 codec.

``name='Line LiveDrive Capture Volume',index=1``, ``name='Line LiveDrive Capture Volume',index=1``
--------------------------------------------------------------------------------------------------
This control is used to attenuate samples from left and right I2S ADC
inputs (on the LiveDrive). The result samples are forwarded to the ADC
capture FIFO (thus to the standard capture PCM device).

톤, raw S/PDIF와 헤드폰

215-254

`Tone Control - Switch`는 front, rear, center/LFE 출력에 영향을 주는 tone control을 켜거나 끈다. `Tone Control - Bass`와 `Tone Control - Treble`은 저음과 고음 강도를 정하지만 중립값이 없다. tone code가 켜지면 표본은 항상 변형되며 원 신호에 가장 가까운 값은 20이다.

`IEC958 Optical Raw Playback Switch`가 켜지면 S/PDIF 디지털 출력 표본은 raw FX8010 PCM에서만 가져오고, 꺼지면 표준 front PCM을 사용한다.

`Headphone Playback Volume,index=1`은 헤드폰 출력 표본을 감쇠한다. `Headphone Center Playback Switch,index=1`은 center PCM 표본을 왼쪽 헤드폰 출력으로 보낸다. `Headphone LFE Playback Switch,index=1`은 이름과 달리 원문 설명상 center PCM 표본을 오른쪽 헤드폰 출력으로 보낸다. 둘 다 별도 center/LFE 출력이 없는 SB Live 카드에 유용하다.

SBLive tone·digital·headphone 출력
front/rear/center/LFETone Control onBass/Treble 값 20이 원 신호에 가장 가까움
IEC958 Raw Switch onraw FX8010 PCMS/PDIF
IEC958 Raw Switch offstandard front PCMS/PDIF
Center switchcenter PCMleft headphone
LFE 이름의 switch원문상 center PCMright headphone

각 스위치가 최종 출력 경로를 선택한다.


``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='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.

``name='Headphone Playback Volume',index=1``
--------------------------------------------
This control attenuates the samples for the headphone output.

``name='Headphone Center Playback Switch',index=1``
---------------------------------------------------
If this switch is on, then the sample for the center PCM is put to the
left headphone output (useful for SB Live cards without separate center/LFE
output).

``name='Headphone LFE Playback Switch',index=1``
------------------------------------------------
If this switch is on, then the sample for the center PCM is put to the
right headphone output (useful for SB Live cards without separate center/LFE
output).

PCM stream별 volume·send routing

255-309

index 0~31의 `EMU10K1 PCM Volume`은 채널 볼륨을 0~`0x1fffd` 범위에서 감쇠한다. 중간값이 무감쇠 기본값이다. mapping 0은 mono, 1은 left, 2는 right이며 세 기본값은 모두 `0xffff`다.

EMU10K1 PCM Volume
MappingChannelDefault
0mono0xffff, no attenuation
1left0xffff, no attenuation
2right0xffff, no attenuation

세 channel mapping과 무감쇠 기본값이다.

`EMU10K1 PCM Send Routing`은 목적지 FX-bus accumulator를 지정한다. mono, left, right 각각에 A~D 네 목적지가 있어 값은 12개다. 모든 목적지는 FX-bus 0~15 중 하나이며 기본값은 A=0, B=1, C=2, D=3이다. 같은 채널을 같은 accumulator에 두 번 할당하는 것은 불법이므로 `0=0 && 1=0` 같은 조합은 유효하지 않다.

EMU10K1 PCM Send Routing
채널목적지기본
0 / 1 / 2 / 3monoA / B / C / D0 / 1 / 2 / 3
4 / 5 / 6 / 7leftA / B / C / D0 / 1 / 2 / 3
8 / 9 / 10 / 11rightA / B / C / D0 / 1 / 2 / 3

12개 mapping의 채널·목적지·기본 FX-bus다.

`EMU10K1 PCM Send Volume`은 각 목적지의 감쇠량을 0~255로 지정한다. 255는 무감쇠, 0은 mute다. mono는 A와 B가 255이고 C와 D가 0, left는 A만 255, right는 B만 255이며 나머지는 0이다.

EMU10K1 PCM Send Volume
채널ABCD
mono25525500
left255000
right025500

채널별 A~D 기본 감쇠값이다.


PCM stream related controls
===========================

``name='EMU10K1 PCM Volume',index 0-31``
----------------------------------------
Channel volume attenuation in range 0-0x1fffd. The middle 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 are
twelve values with this mapping:

*  0 -  mono, A destination (FX-bus 0-15), default 0
*  1 -  mono, B destination (FX-bus 0-15), default 1
*  2 -  mono, C destination (FX-bus 0-15), default 2
*  3 -  mono, D destination (FX-bus 0-15), default 3
*  4 -  left, A destination (FX-bus 0-15), default 0
*  5 -  left, B destination (FX-bus 0-15), default 1
*  6 -  left, C destination (FX-bus 0-15), default 2
*  7 -  left, D destination (FX-bus 0-15), default 3
*  8 - right, A destination (FX-bus 0-15), default 0
*  9 - right, B destination (FX-bus 0-15), default 1
* 10 - right, C destination (FX-bus 0-15), default 2
* 11 - right, D destination (FX-bus 0-15), default 3

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 -  left, A destination attn, default 255 (no attenuation)
*  5 -  left, B destination attn, default 0 (mute)
*  6 -  left, C destination attn, default 0 (mute)
*  7 -  left, D destination attn, default 0 (mute)
*  8 - right, A destination attn, default 0 (mute)
*  9 - right, B destination attn, default 255 (no attenuation)
* 10 - right, C destination attn, default 0 (mute)
* 11 - right, D destination attn, default 0 (mute)


매뉴얼과 WIPO 특허

310-341

Creative의 옛 문서 사이트 `ftp://opensource.creative.com/pub/doc`는 폐쇄됐지만 문서는 다른 여러 위치에서 구할 수 있다. `LM4545.pdf`는 AC97 Codec, `m2049.pdf`는 EMU10K1 Digital Audio Processor, `hog63.ps`는 오디오 효과용 DSP 칩 구조인 FX8010을 설명한다.

Creative 참고 문서
파일내용
LM4545.pdfAC97 Codec
m2049.pdfEMU10K1 Digital Audio Processor
hog63.psFX8010 - A DSP Chip Architecture for Audio Effects

폐쇄된 사이트에 있던 매뉴얼 이름과 내용이다.

WIPO 특허 `WO 9901813 (A1)`은 여러 비동기 스트림을 갖는 Audio Effects Processor로 1999-01-14 공개됐다. `WO 9901814 (A1)`은 Audio Effects용 Instruction Set을 가진 Processor로 같은 날 공개됐다. `WO 9901953 (A1)`은 Instruction Execution과 Audio Data Sequencing을 분리한 Audio Effects Processor이며 역시 1999-01-14 공개됐다.

WIPO 특허
번호제목날짜
WO 9901813 (A1)Audio Effects Processor with multiple asynchronous streams1999-01-14
WO 9901814 (A1)Processor with Instruction Set for Audio Effects1999-01-14
WO 9901953 (A1)Audio Effects Processor having Decoupled Instruction Execution and Audio Data Sequencing1999-01-14

문서에 열거된 공개번호와 제목이다.

MANUALS/PATENTS
===============

ftp://opensource.creative.com/pub/doc
-------------------------------------

Note that the site is defunct, but the documents are available
from various other locations.

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)

미국 특허

342-376

미국 특허는 `https://www.uspto.gov/`에서 찾을 수 있다. 원문에 나열된 번호·제목·날짜는 다음과 같다.

Sound Blaster Live 관련 미국 특허
번호제목날짜
US 5925841Digital Sampling Instrument employing cache memory1999-07-20
US 5928342Audio Effects Processor integrated on a single chip with a multiport memory onto which multiple asynchronous digital sound samples can be concurrently loaded1999-07-27
US 5930158Processor with Instruction Set for Audio Effects1999-07-27
US 6032235Memory initialization circuit (Tram)2000-02-29
US 6138207Interpolation 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 sizes2000-10-24
US 6151670Method for conserving memory storage using a pool of short term memory registers2000-11-21
US 6195715Interrupt 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 register2001-02-27

원문의 특허 식별자와 긴 제목을 보존한다.

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)