Back to home page

OSCL-LXR

 
 

    


0001 =================================================================
0002 Low latency, multichannel audio with JACK and the emu10k1/emu10k2
0003 =================================================================
0004 
0005 This document is a guide to using the emu10k1 based devices with JACK for low
0006 latency, multichannel recording functionality.  All of my recent work to allow
0007 Linux users to use the full capabilities of their hardware has been inspired 
0008 by the kX Project.  Without their work I never would have discovered the true
0009 power of this hardware.
0010 
0011         http://www.kxproject.com
0012                                                 - Lee Revell, 2005.03.30
0013 
0014 
0015 Until recently, emu10k1 users on Linux did not have access to the same low
0016 latency, multichannel features offered by the "kX ASIO" feature of their
0017 Windows driver.  As of ALSA 1.0.9 this is no more!
0018 
0019 For those unfamiliar with kX ASIO, this consists of 16 capture and 16 playback
0020 channels.  With a post 2.6.9 Linux kernel, latencies down to 64 (1.33 ms) or
0021 even 32 (0.66ms) frames should work well.
0022 
0023 The configuration is slightly more involved than on Windows, as you have to
0024 select the correct device for JACK to use.  Actually, for qjackctl users it's
0025 fairly self explanatory - select Duplex, then for capture and playback select
0026 the multichannel devices, set the in and out channels to 16, and the sample
0027 rate to 48000Hz.  The command line looks like this:
0028 ::
0029 
0030   /usr/local/bin/jackd -R -dalsa -r48000 -p64 -n2 -D -Chw:0,2 -Phw:0,3 -S
0031 
0032 This will give you 16 input ports and 16 output ports.
0033 
0034 The 16 output ports map onto the 16 FX buses (or the first 16 of 64, for the
0035 Audigy).  The mapping from FX bus to physical output is described in
0036 sb-live-mixer.rst (or audigy-mixer.rst).
0037 
0038 The 16 input ports are connected to the 16 physical inputs.  Contrary to
0039 popular belief, all emu10k1 cards are multichannel cards.  Which of these
0040 input channels have physical inputs connected to them depends on the card
0041 model.  Trial and error is highly recommended; the pinout diagrams
0042 for the card have been reverse engineered by some enterprising kX users and are 
0043 available on the internet.  Meterbridge is helpful here, and the kX forums are
0044 packed with useful information.
0045 
0046 Each input port will either correspond to a digital (SPDIF) input, an analog
0047 input, or nothing.  The one exception is the SBLive! 5.1.  On these devices,
0048 the second and third input ports are wired to the center/LFE output.  You will
0049 still see 16 capture channels, but only 14 are available for recording inputs.
0050 
0051 This chart, borrowed from kxfxlib/da_asio51.cpp, describes the mapping of JACK
0052 ports to FXBUS2 (multitrack recording input) and EXTOUT (physical output)
0053 channels.
0054 
0055 JACK (& ASIO) mappings on 10k1 5.1 SBLive cards:
0056 
0057 ==============  ========        ============
0058 JACK            Epilog          FXBUS2(nr)
0059 ==============  ========        ============
0060 capture_1       asio14          FXBUS2(0xe)
0061 capture_2       asio15          FXBUS2(0xf)
0062 capture_3       asio0           FXBUS2(0x0)     
0063 ~capture_4      Center          EXTOUT(0x11)    // mapped to by Center
0064 ~capture_5      LFE             EXTOUT(0x12)    // mapped to by LFE
0065 capture_6       asio3           FXBUS2(0x3)
0066 capture_7       asio4           FXBUS2(0x4)
0067 capture_8       asio5           FXBUS2(0x5)
0068 capture_9       asio6           FXBUS2(0x6)
0069 capture_10      asio7           FXBUS2(0x7)
0070 capture_11      asio8           FXBUS2(0x8)
0071 capture_12      asio9           FXBUS2(0x9)
0072 capture_13      asio10          FXBUS2(0xa)
0073 capture_14      asio11          FXBUS2(0xb)
0074 capture_15      asio12          FXBUS2(0xc)
0075 capture_16      asio13          FXBUS2(0xd)
0076 ==============  ========        ============
0077 
0078 TODO: describe use of ld10k1/qlo10k1 in conjunction with JACK