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