← Documents Documentation/sound/cards/emu10k1-jack.rst GitHub 원문 ↗

Linux 6.18.37 · Sound

JACK과 emu10k1/emu10k2의 저지연 다중 채널 오디오

emu10k1/emu10k2 장치를 JACK의 16입력·16출력 저지연 장치로 구성하고, SBLive! 5.1의 FXBUS2·EXTOUT 포트 좌표와 실제 14개 녹음 입력을 정리합니다.

Source pathDocumentation/sound/cards/emu10k1-jack.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약·해설

emu10k1-jack.rst:1-78

emu10k1/emu10k2 장치를 JACK의 16입력·16출력 저지연 장치로 구성하고, SBLive! 5.1의 FXBUS2·EXTOUT 포트 좌표와 실제 14개 녹음 입력을 정리합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 =================================================================
2 Low latency, multichannel audio with JACK and the emu10k1/emu10k2
3 =================================================================
4
5 This document is a guide to using the emu10k1 based devices with JACK for low
6 latency, multichannel recording functionality. All of my recent work to allow
7 Linux users to use the full capabilities of their hardware has been inspired
8 by the kX Project. Without their work I never would have discovered the true
9 power of this hardware.
10
11 http://www.kxproject.com
12 - Lee Revell, 2005.03.30
13
14
15 Until recently, emu10k1 users on Linux did not have access to the same low
16 latency, multichannel features offered by the "kX ASIO" feature of their
17 Windows driver. As of ALSA 1.0.9 this is no more!
18
19 For those unfamiliar with kX ASIO, this consists of 16 capture and 16 playback
20 channels. With a post 2.6.9 Linux kernel, latencies down to 64 (1.33 ms) or
21 even 32 (0.66ms) frames should work well.
22
23 The configuration is slightly more involved than on Windows, as you have to
24 select the correct device for JACK to use. Actually, for qjackctl users it's
25 fairly self explanatory - select Duplex, then for capture and playback select
26 the multichannel devices, set the in and out channels to 16, and the sample
27 rate to 48000Hz. The command line looks like this:
28 ::
29
30 /usr/local/bin/jackd -R -dalsa -r48000 -p64 -n2 -D -Chw:0,2 -Phw:0,3 -S
31
32 This will give you 16 input ports and 16 output ports.
33
34 The 16 output ports map onto the 16 FX buses (or the first 16 of 64, for the
35 Audigy). The mapping from FX bus to physical output is described in
36 sb-live-mixer.rst (or audigy-mixer.rst).
37
38 The 16 input ports are connected to the 16 physical inputs. Contrary to
39 popular belief, all emu10k1 cards are multichannel cards. Which of these
40 input channels have physical inputs connected to them depends on the card
41 model. Trial and error is highly recommended; the pinout diagrams
42 for the card have been reverse engineered by some enterprising kX users and are
43 available on the internet. Meterbridge is helpful here, and the kX forums are
44 packed with useful information.
45
46 Each input port will either correspond to a digital (SPDIF) input, an analog
47 input, or nothing. The one exception is the SBLive! 5.1. On these devices,
48 the second and third input ports are wired to the center/LFE output. You will
49 still see 16 capture channels, but only 14 are available for recording inputs.
50
51 This chart, borrowed from kxfxlib/da_asio51.cpp, describes the mapping of JACK
52 ports to FXBUS2 (multitrack recording input) and EXTOUT (physical output)
53 channels.
54
55 JACK (& ASIO) mappings on 10k1 5.1 SBLive cards:
56
57 ============== ======== ============
58 JACK Epilog FXBUS2(nr)
59 ============== ======== ============
60 capture_1 asio14 FXBUS2(0xe)
61 capture_2 asio15 FXBUS2(0xf)
62 capture_3 asio0 FXBUS2(0x0)
63 ~capture_4 Center EXTOUT(0x11) // mapped to by Center
64 ~capture_5 LFE EXTOUT(0x12) // mapped to by LFE
65 capture_6 asio3 FXBUS2(0x3)
66 capture_7 asio4 FXBUS2(0x4)
67 capture_8 asio5 FXBUS2(0x5)
68 capture_9 asio6 FXBUS2(0x6)
69 capture_10 asio7 FXBUS2(0x7)
70 capture_11 asio8 FXBUS2(0x8)
71 capture_12 asio9 FXBUS2(0x9)
72 capture_13 asio10 FXBUS2(0xa)
73 capture_14 asio11 FXBUS2(0xb)
74 capture_15 asio12 FXBUS2(0xc)
75 capture_16 asio13 FXBUS2(0xd)
76 ============== ======== ============
77
78 TODO: describe use of ld10k1/qlo10k1 in conjunction with JACK
79

3. 한국어 전문 번역

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

JACK 16×16 저지연 설정

1-44

이 문서는 emu10k1 기반 장치를 JACK에서 저지연 다중 채널 녹음에 사용하는 안내서다. Lee Revell은 Linux 사용자가 하드웨어의 전체 기능을 쓰도록 한 자신의 작업이 kX Project(`http://www.kxproject.com`)에서 영감을 받았으며, 그 작업 없이는 이 하드웨어의 힘을 발견하지 못했을 것이라고 2005-03-30에 적었다.

과거 Linux의 emu10k1 사용자는 Windows 드라이버의 `kX ASIO`가 제공하는 저지연 다중 채널 기능을 사용할 수 없었지만 ALSA 1.0.9부터 가능해졌다. kX ASIO는 캡처 16채널과 재생 16채널로 구성된다. Linux 커널 2.6.9 이후에는 64프레임(1.33ms), 심지어 32프레임(0.66ms) 지연도 잘 동작해야 한다.

Windows보다 설정이 조금 복잡한 이유는 JACK이 쓸 올바른 장치를 골라야 하기 때문이다. `qjackctl`에서는 Duplex를 선택하고 캡처와 재생에 다중 채널 장치를 지정하며 입력·출력 채널을 각각 16, 표본률을 48000Hz로 설정한다. 명령행은 다음과 같다.

/usr/local/bin/jackd -R -dalsa -r48000 -p64 -n2 -D -Chw:0,2 -Phw:0,3 -S

이 명령은 입력 포트 16개와 출력 포트 16개를 만든다. 출력 16개는 FX bus 16개에 대응하며 Audigy에서는 64개 중 처음 16개다. FX bus에서 물리 출력으로의 매핑은 `sb-live-mixer.rst` 또는 `audigy-mixer.rst`에 설명되어 있다.

입력 포트 16개는 물리 입력 16개에 연결된다. 통념과 달리 모든 emu10k1 카드는 다중 채널 카드지만 실제 물리 입력이 연결된 채널은 모델마다 다르다. 시행착오로 확인하는 것을 권장하며, kX 사용자가 역공학한 핀 배치 그림은 인터넷에서 찾을 수 있다. Meterbridge와 kX 포럼도 유용하다.

JACK 저지연 설정
항목
캡처 장치hw:0,2
재생 장치hw:0,3
입력 / 출력 채널16 / 16
표본률48000Hz
주기 크기64프레임, 1.33ms
더 낮은 예32프레임, 0.66ms

16입력·16출력 다중 채널 장치를 여는 핵심 값이다.

JACK 출력 경로
JACK playback 1~16FX bus 0~15sb-live-mixer 또는 audigy-mixer 라우팅물리 출력

JACK 포트가 FX bus를 거쳐 물리 출력으로 연결된다.

=================================================================
Low latency, multichannel audio with JACK and the emu10k1/emu10k2
=================================================================

This document is a guide to using the emu10k1 based devices with JACK for low
latency, multichannel recording functionality.  All of my recent work to allow
Linux users to use the full capabilities of their hardware has been inspired 
by the kX Project.  Without their work I never would have discovered the true
power of this hardware.

        http://www.kxproject.com
                                                - Lee Revell, 2005.03.30


Until recently, emu10k1 users on Linux did not have access to the same low
latency, multichannel features offered by the "kX ASIO" feature of their
Windows driver.  As of ALSA 1.0.9 this is no more!

For those unfamiliar with kX ASIO, this consists of 16 capture and 16 playback
channels.  With a post 2.6.9 Linux kernel, latencies down to 64 (1.33 ms) or
even 32 (0.66ms) frames should work well.

The configuration is slightly more involved than on Windows, as you have to
select the correct device for JACK to use.  Actually, for qjackctl users it's
fairly self explanatory - select Duplex, then for capture and playback select
the multichannel devices, set the in and out channels to 16, and the sample
rate to 48000Hz.  The command line looks like this:
::

  /usr/local/bin/jackd -R -dalsa -r48000 -p64 -n2 -D -Chw:0,2 -Phw:0,3 -S

This will give you 16 input ports and 16 output ports.

The 16 output ports map onto the 16 FX buses (or the first 16 of 64, for the
Audigy).  The mapping from FX bus to physical output is described in
sb-live-mixer.rst (or audigy-mixer.rst).

The 16 input ports are connected to the 16 physical inputs.  Contrary to
popular belief, all emu10k1 cards are multichannel cards.  Which of these
input channels have physical inputs connected to them depends on the card
model.  Trial and error is highly recommended; the pinout diagrams
for the card have been reverse engineered by some enterprising kX users and are 
available on the internet.  Meterbridge is helpful here, and the kX forums are
packed with useful information.

SBLive! 5.1 입력과 JACK 포트 매핑

45-78

각 입력 포트는 디지털 S/PDIF 입력, 아날로그 입력 또는 미연결 상태 중 하나다. 예외는 SBLive! 5.1로, 이 장치의 두 번째와 세 번째 입력 포트는 Center/LFE 출력에 배선되어 있다. 캡처 채널 16개가 보이지만 녹음 입력으로 사용할 수 있는 것은 14개뿐이다.

다음 표는 `kxfxlib/da_asio51.cpp`에서 가져온 것으로 10k1 5.1 SBLive 카드의 JACK 포트를 Epilog 이름과 다중 트랙 녹음 입력 `FXBUS2`, 물리 출력 `EXTOUT` 채널에 대응시킨다. 원문의 `~capture_4`, `~capture_5` 표기는 녹음 입력 대신 Center/LFE 출력으로 매핑된 포트를 그대로 나타낸다.

10k1 5.1 SBLive JACK/ASIO 매핑
JACKEpilogFXBUS2 / EXTOUT
capture_1asio14FXBUS2(0xe)
capture_2asio15FXBUS2(0xf)
capture_3asio0FXBUS2(0x0)
~capture_4CenterEXTOUT(0x11), Center가 매핑
~capture_5LFEEXTOUT(0x12), LFE가 매핑
capture_6asio3FXBUS2(0x3)
capture_7asio4FXBUS2(0x4)
capture_8asio5FXBUS2(0x5)
capture_9asio6FXBUS2(0x6)
capture_10asio7FXBUS2(0x7)
capture_11asio8FXBUS2(0x8)
capture_12asio9FXBUS2(0x9)
capture_13asio10FXBUS2(0xa)
capture_14asio11FXBUS2(0xb)
capture_15asio12FXBUS2(0xc)
capture_16asio13FXBUS2(0xd)

원문 표의 JACK, Epilog, FXBUS2/EXTOUT 좌표를 행별로 보존했다.

문서의 남은 TODO는 JACK과 함께 `ld10k1`/`qlo10k1`을 사용하는 방법을 설명하는 것이다.

SBLive! 5.1 캡처 가용성
JACK capture 포트 16개 표시capture_4는 Center EXTOUT(0x11)capture_5는 LFE EXTOUT(0x12)실제 녹음 입력 14개

보이는 포트 수와 실제 녹음 입력 수가 다른 이유다.


Each input port will either correspond to a digital (SPDIF) input, an analog
input, or nothing.  The one exception is the SBLive! 5.1.  On these devices,
the second and third input ports are wired to the center/LFE output.  You will
still see 16 capture channels, but only 14 are available for recording inputs.

This chart, borrowed from kxfxlib/da_asio51.cpp, describes the mapping of JACK
ports to FXBUS2 (multitrack recording input) and EXTOUT (physical output)
channels.

JACK (& ASIO) mappings on 10k1 5.1 SBLive cards:

==============  ========        ============
JACK                Epilog                FXBUS2(nr)
==============  ========        ============
capture_1        asio14                FXBUS2(0xe)
capture_2        asio15                FXBUS2(0xf)
capture_3        asio0                FXBUS2(0x0)        
~capture_4        Center                EXTOUT(0x11)        // mapped to by Center
~capture_5        LFE                EXTOUT(0x12)        // mapped to by LFE
capture_6        asio3                FXBUS2(0x3)
capture_7        asio4                FXBUS2(0x4)
capture_8        asio5                FXBUS2(0x5)
capture_9        asio6                FXBUS2(0x6)
capture_10        asio7                FXBUS2(0x7)
capture_11        asio8                FXBUS2(0x8)
capture_12        asio9                FXBUS2(0x9)
capture_13        asio10                FXBUS2(0xa)
capture_14        asio11                FXBUS2(0xb)
capture_15        asio12                FXBUS2(0xc)
capture_16        asio13                FXBUS2(0xd)
==============  ========        ============

TODO: describe use of ld10k1/qlo10k1 in conjunction with JACK