I’ve been trying to optimise my laptop so I could get Mixxx, an open source DJ-ing application, to run on it smoothly. The only thing I hadn’t tried yet was using the JACK Audio Connection Kit, i.e. JACK. Word is that audio applications using JACK have very low latency.
The best I could get Mixxx to run using ALSA devices was with 32 ms latency. And even then, audio still occasionally popped and cracked (worse even when the Nvidia driver was still using agpgart).
Popping and cracking kinda ruins the whole experience, so the potential performance benefit of a functioning JACK set-up is something that I “needed”.
Not working
For some reason though, initially, I could not get Mixxx and JACK work nicely together with my AUDIO4DJ audio interface.
This USB audio interface has 2 stereo in- and outputs; and I could only get either 1 output and 1 input. Without a headphone output and a 2nd input for vinyl control using JACK would render the whole set-up useless…
Some Googling did reveal some hints, like modifying the /etc/asound.conf file. I thought I had already done that earlier; but apparently this does not work with JACK.
See, my “old” asound.conf split the audio device up to two devices (I used one for the Master, and the other one for the Headphone output in Mixxx.) JACK can only handle one (or I am doing something wrong), so that had to be changed…
Solutions suggested in this thread on the NI forums did not work for me either, I ended up with the same problem basically: only one input and one output.
Working!
That thread did give me a hint to the solution — the following /etc/asound.conf, works for me like it should: it exposes a single “AUDIO4DJ” device, which binds stereo channels A and B to it:
pcm.AUDIO4DJ {
type multi
# bind hardware devices
slaves.a.pcm "hw:0,0,0"
slaves.a.channels 2
slaves.b.pcm "hw:0,0,1"
slaves.b.channels 2
# bind channels to virtual device
bindings.0.slave a
bindings.0.channel 0
bindings.1.slave a
bindings.1.channel 1
bindings.2.slave b
bindings.2.channel 0
bindings.3.slave b
bindings.3.channel 1
}
(Note that slaves.b.pcm “hw:0,0,1″ — which points it to the B channel.)
That way, I can now use that “AUDIODJ4″ as a device-name in qjackctl as Input- and Output Device, each giving 4 channels (2 stereo channels).
If I now go into the Audio preferences in Mixxx, I can select channels 1-2 for the Master output and channels 3-4 for the Headphones. Similarly, for Vinyl Control, the first input deck can be put on channels 1-2 and the second on channels 3-4..
It took a bit of tinkering but, again, it was worth it!
Now that JACK is properly working and Mixxx can use it, vinyl control response is amazing and the audio playback is exceptional — I haven’t heard a pop or crack since!
on
November 12th 2009 at 2:54 pm in
no comments 








