요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
===========================================
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).
``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).
``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).
``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 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)
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)
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)
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
EMU10K1 DSP, raw IEC958와 Wave 경로
1-95EMU10K1 칩에는 다양한 표본 처리 방식을 프로그램할 수 있는 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을 본다.
디지털 출력으로 수정 없이 전달되는 장치 형식이다.
디지털 믹서 제어는 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 장치로 보낸다.
같은 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을 녹음할 수 없다.
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로 보낸다.
입력 유형별 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 카드에 유용하다.
각 스위치가 최종 출력 경로를 선택한다.
``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-309index 0~31의 `EMU10K1 PCM Volume`은 채널 볼륨을 0~`0x1fffd` 범위에서 감쇠한다. 중간값이 무감쇠 기본값이다. mapping 0은 mono, 1은 left, 2는 right이며 세 기본값은 모두 `0xffff`다.
세 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` 같은 조합은 유효하지 않다.
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이다.
채널별 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-341Creative의 옛 문서 사이트 `ftp://opensource.creative.com/pub/doc`는 폐쇄됐지만 문서는 다른 여러 위치에서 구할 수 있다. `LM4545.pdf`는 AC97 Codec, `m2049.pdf`는 EMU10K1 Digital Audio Processor, `hog63.ps`는 오디오 효과용 DSP 칩 구조인 FX8010을 설명한다.
폐쇄된 사이트에 있던 매뉴얼 이름과 내용이다.
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 공개됐다.
문서에 열거된 공개번호와 제목이다.
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/`에서 찾을 수 있다. 원문에 나열된 번호·제목·날짜는 다음과 같다.
원문의 특허 식별자와 긴 제목을 보존한다.
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)
요약·해설
sb-live-mixer.rst:1-376EMU10K1 기본 DSP 코드의 IEC958 raw PCM, Wave·Synth·Surround·AC97·디지털 입력 라우팅과 PCM A~D send, 관련 매뉴얼·특허를 설명합니다.