My Studio
Posted by Hans Fugal
Well, I've spent two days doing actual work in my studio and I can now confidently report my settings for the benefit of Linux-running MacBook users (and other related hoodlums).
I won't go into the detail that I did in the previous posts, most of which is still relevant.
I pass the option position_fix=3 to the module snd-hda-intel. I did this by creating /etc/modprobe.d/local, containing:
options snd-hda-intel position_fix=3
then running sudo update-initramfs -uk all.
I set up my Gnome session to run QJackCtl, which is in turn configured to start JACK on startup. My JACK settings (from ~/.jackdrc) are:
/usr/bin/jackd -R -t2000 -dalsa -dhw:0 -r48000 -p1024 -n2 -s
JACK is extremely stable. I've had 2, maybe 3 xruns through two days of work, and those were when starting up applications, not when actually using them.
Now, since we have only one audio device and JACK has monopolized it, and we want to hear other than JACK, we need more configuration. Here is my ~/.asoundrc:
# Set the default device to PulseAudio for all well-behaved ALSA applications
pcm.!default {
type plug
slave.pcm "pulse"
}
ctl.!default {
type plug
slave.pcm "pulse"
}
# This device can come in handy, but I mostly don't use it.
pcm.jack {
type plug
slave {
pcm {
type jack
playback_ports {
0 alsa_pcm:playback_1
1 alsa_pcm:playback_2
}
capture_ports {
0 alsa_pcm:capture_1
1 alsa_pcm:capture_2
}
}
rate 48000
}
}
ctl.jack {
type hw
card 0
}
# The acutal PulseAudio device
pcm.pulse {
type pulse
}
ctl.pulse {
type pulse
}
Now all well-behaved ALSA programs will use the default ALSA device, i.e.
PulseAudio. PulseAudio needs to be configured now to use JACK. You'll need to
get the pulseaudio-module-jack package, which probably means you'll need to
build it yourself. I show you how to do that and how to configure PulseAudio in
a previous
post.
Incidentally you need to do the same for libasound2-plugins if you want to
use the JACK plugin for ALSA as in my asoundrc above.
Now we have a bit of a chicken and egg problem. PulseAudio starts when you log
in, and so does JACK (by way of QJackCtl in your Gnome session). But PulseAudio
will fail to start if JACK isn't already running. What's more, if you decided
you wanted to restart JACK for whatever reason, you'd have to restart
PulseAudio too. So here's how I solved it. I leave ESD enabled in the Gnome
sound settings, knowing that it will fail to start (and I won't get the really
cool Ubuntu Studio startup ditty, but oh well). It needs to be checked if you
want Gnome to make nifty system sounds. Now, in QJackCtl setup, on the options
tab, check the box for "Execute script after Startup" and put "pulseaudio -D"
in the box. Now PulseAudio will start whenever JACK starts, and it will
stop/crash/whatever whenever JACK stops.
Now, you need to install libflashsupport to get Flash working with
PulseAudio. Even so you might find occasional sites that crash it.
That about covers it. If you do much work with audio applications using complicated JACK graphs, don't overlook the power of QJackCtl's patchbay, which will automatically hook things up. I have a patch that will connect Aeolus to system output 3&4 (headphones/external speakers), and hook my MIDI keyboard to Aeolus. So all I have to do is start Aeolus and pull some stops and I'm ready to play.
Which reminds me, there's still the annoying thing about JACK having 8 outputs
(for surround sound) and the internal speakers are on outputs 1&2, and the
headphone jack is outputs 3&4. If you're not getting sound from a JACK app and
you think you should be, that's the first thing to check. Someday I plan to
figure out the .asoundrc magic needed to set up JACK so that it's a regular
stereo device sending sound to both the internal speakers and headphones. If
you know how, please enlighten us in the comments. I know it can be done, I
just haven't put in the time to figure it out and test it.

Thanks for the update on your studio setup! I'm trying to get pulseaudio-module-jack right now.
After compiling PulseAudio according to those instructions, I end up without pulseaudio-module-jack*.deb. There are debs of modules for gconf, hal, lirc, x11, and zeroconf, but no jack. How do I ask for jack?
Make sure you have libjack-dev installed before you build it.
I am seeing the same thing: no jack modules are produced. I'm on ubuntu 8.04 with ubuntustudio-audio and ubuntustudio-audio-plugins
I've installed libjack-dev. Then I tried with libjack0.100.0-dev as well. Then also with libio2jack0-dev.
I have no idea if they should or shouldn't be there but no jack modules anyways.
I downloaded the sources from pulseaudio.org and compiled from those as well still the same result.
I see the jack module sources but they are not included in the compiled/installed files.
Update: I found the compiled version at http://packages.debian.org/lenny/pulseaudio-module-jack