18c2ecf20Sopenharmony_ci=================================================================
28c2ecf20Sopenharmony_ciLow latency, multichannel audio with JACK and the emu10k1/emu10k2
38c2ecf20Sopenharmony_ci=================================================================
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ciThis document is a guide to using the emu10k1 based devices with JACK for low
68c2ecf20Sopenharmony_cilatency, multichannel recording functionality.  All of my recent work to allow
78c2ecf20Sopenharmony_ciLinux users to use the full capabilities of their hardware has been inspired 
88c2ecf20Sopenharmony_ciby the kX Project.  Without their work I never would have discovered the true
98c2ecf20Sopenharmony_cipower of this hardware.
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci	http://www.kxproject.com
128c2ecf20Sopenharmony_ci						- Lee Revell, 2005.03.30
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ciUntil recently, emu10k1 users on Linux did not have access to the same low
168c2ecf20Sopenharmony_cilatency, multichannel features offered by the "kX ASIO" feature of their
178c2ecf20Sopenharmony_ciWindows driver.  As of ALSA 1.0.9 this is no more!
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ciFor those unfamiliar with kX ASIO, this consists of 16 capture and 16 playback
208c2ecf20Sopenharmony_cichannels.  With a post 2.6.9 Linux kernel, latencies down to 64 (1.33 ms) or
218c2ecf20Sopenharmony_cieven 32 (0.66ms) frames should work well.
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ciThe configuration is slightly more involved than on Windows, as you have to
248c2ecf20Sopenharmony_ciselect the correct device for JACK to use.  Actually, for qjackctl users it's
258c2ecf20Sopenharmony_cifairly self explanatory - select Duplex, then for capture and playback select
268c2ecf20Sopenharmony_cithe multichannel devices, set the in and out channels to 16, and the sample
278c2ecf20Sopenharmony_cirate to 48000Hz.  The command line looks like this:
288c2ecf20Sopenharmony_ci::
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci  /usr/local/bin/jackd -R -dalsa -r48000 -p64 -n2 -D -Chw:0,2 -Phw:0,3 -S
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ciThis will give you 16 input ports and 16 output ports.
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ciThe 16 output ports map onto the 16 FX buses (or the first 16 of 64, for the
358c2ecf20Sopenharmony_ciAudigy).  The mapping from FX bus to physical output is described in
368c2ecf20Sopenharmony_cisb-live-mixer.rst (or audigy-mixer.rst).
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ciThe 16 input ports are connected to the 16 physical inputs.  Contrary to
398c2ecf20Sopenharmony_cipopular belief, all emu10k1 cards are multichannel cards.  Which of these
408c2ecf20Sopenharmony_ciinput channels have physical inputs connected to them depends on the card
418c2ecf20Sopenharmony_cimodel.  Trial and error is highly recommended; the pinout diagrams
428c2ecf20Sopenharmony_cifor the card have been reverse engineered by some enterprising kX users and are 
438c2ecf20Sopenharmony_ciavailable on the internet.  Meterbridge is helpful here, and the kX forums are
448c2ecf20Sopenharmony_cipacked with useful information.
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ciEach input port will either correspond to a digital (SPDIF) input, an analog
478c2ecf20Sopenharmony_ciinput, or nothing.  The one exception is the SBLive! 5.1.  On these devices,
488c2ecf20Sopenharmony_cithe second and third input ports are wired to the center/LFE output.  You will
498c2ecf20Sopenharmony_cistill see 16 capture channels, but only 14 are available for recording inputs.
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ciThis chart, borrowed from kxfxlib/da_asio51.cpp, describes the mapping of JACK
528c2ecf20Sopenharmony_ciports to FXBUS2 (multitrack recording input) and EXTOUT (physical output)
538c2ecf20Sopenharmony_cichannels.
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ciJACK (& ASIO) mappings on 10k1 5.1 SBLive cards:
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci==============  ========        ============
588c2ecf20Sopenharmony_ciJACK		Epilog		FXBUS2(nr)
598c2ecf20Sopenharmony_ci==============  ========        ============
608c2ecf20Sopenharmony_cicapture_1	asio14		FXBUS2(0xe)
618c2ecf20Sopenharmony_cicapture_2	asio15		FXBUS2(0xf)
628c2ecf20Sopenharmony_cicapture_3	asio0		FXBUS2(0x0)	
638c2ecf20Sopenharmony_ci~capture_4	Center		EXTOUT(0x11)	// mapped to by Center
648c2ecf20Sopenharmony_ci~capture_5	LFE		EXTOUT(0x12)	// mapped to by LFE
658c2ecf20Sopenharmony_cicapture_6	asio3		FXBUS2(0x3)
668c2ecf20Sopenharmony_cicapture_7	asio4		FXBUS2(0x4)
678c2ecf20Sopenharmony_cicapture_8	asio5		FXBUS2(0x5)
688c2ecf20Sopenharmony_cicapture_9	asio6		FXBUS2(0x6)
698c2ecf20Sopenharmony_cicapture_10	asio7		FXBUS2(0x7)
708c2ecf20Sopenharmony_cicapture_11	asio8		FXBUS2(0x8)
718c2ecf20Sopenharmony_cicapture_12	asio9		FXBUS2(0x9)
728c2ecf20Sopenharmony_cicapture_13	asio10		FXBUS2(0xa)
738c2ecf20Sopenharmony_cicapture_14	asio11		FXBUS2(0xb)
748c2ecf20Sopenharmony_cicapture_15	asio12		FXBUS2(0xc)
758c2ecf20Sopenharmony_cicapture_16	asio13		FXBUS2(0xd)
768c2ecf20Sopenharmony_ci==============  ========        ============
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ciTODO: describe use of ld10k1/qlo10k1 in conjunction with JACK
79