使用JACK和emu10k1/emu10k2實現低延遲、多聲道音訊¶
本文件旨在指導如何使用基於emu10k1的裝置與JACK一起實現低延遲、多聲道錄音功能。我最近所做的一切工作,都是為了讓Linux使用者能夠充分利用其硬體的全部功能,這都受到了kX Project的啟發。如果沒有他們的工作,我永遠不會發現這種硬體的真正力量。
- http://www.kxproject.com
Lee Revell, 2005.03.30
直到最近,Linux上的emu10k1使用者還無法獲得與其Windows驅動程式的“kX ASIO”功能相同的低延遲、多聲道功能。從ALSA 1.0.9開始,情況不再如此!
對於那些不熟悉kX ASIO的人來說,它包含16個捕獲和16個播放通道。對於2.6.9之後的Linux核心,低至64(1.33 ms)甚至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個輸出埠對映到16個FX匯流排(或Audigy的64箇中的前16個)。從FX匯流排到物理輸出的對映在聲霸卡 Live 混音器/預設DSP程式碼(或聲霸卡 Audigy 混音器/預設DSP程式碼)中描述。
這16個輸入埠連線到16個物理輸入。與普遍的看法相反,所有emu10k1卡都是多聲道卡。這些輸入通道中哪些連線了物理輸入取決於卡型號。強烈建議進行試錯;該卡的引腳圖已被一些有進取心的kX使用者逆向工程,並且可以在網際網路上找到。Meterbridge在這裡很有用,並且kX論壇上擠滿了有用的資訊。
每個輸入埠將對應於一個數字(SPDIF)輸入、一個模擬輸入或什麼都沒有。唯一的例外是SBLive! 5.1。在這些裝置上,第二個和第三個輸入埠連線到中央/LFE輸出。您仍然會看到16個捕獲通道,但只有14個可用於錄製輸入。
此圖表借用了kxfxlib/da_asio51.cpp,描述了JACK埠到FXBUS2(多軌錄音輸入)和EXTOUT(物理輸出)通道的對映。
10k1 5.1 SBLive卡上的JACK (& ASIO) 對映
JACK |
後記 |
FXBUS2(nr) |
|---|---|---|
capture_1 |
asio14 |
FXBUS2(0xe) |
capture_2 |
asio15 |
FXBUS2(0xf) |
capture_3 |
asio0 |
FXBUS2(0x0) |
~capture_4 |
中央 |
EXTOUT(0x11) // 由中央對映到 |
~capture_5 |
LFE |
EXTOUT(0x12) // 由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:描述ld10k1/qlo10k1與JACK結合使用的情況