This is an old revision of the document!
Table of Contents
First, you must create the universe...
I use this guide in its current form on Debian Sid.
Start with the essentials.
sudo apt-get -y install ncurses-dev build-essential automake cmake subversion git libogg-dev alsa-tools alsa-tools-gui rtirq-init
Recent (hah) changes:
rtirq-init
used to be listed here, but with BFS-patched kernels, I don't think it's necessary anymore
Firmware.
First off, fuck you Debian, for not including this firmware anywhere anymore. You've been getting more and more hostile toward HDSP users for years and this just makes me wonder what you're going to do next to make life harder for us.
I would not be surprised in the least if, in a near-future release of Debian, they decide to just not ship any binary firmware for anything anywhere ever.
Fuck you, fuck you, fuck you.
git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
cd linux-firmware
sudo make install
wget ftp://ftp.alsa-project.org/pub/firmware/alsa-firmware-1.0.9.tar.bz2
cd alsa-firmware-1.0.9
./configure –prefix=/usr –libdir=/usr/lib/x86_64-linux-gnu
make
sudo make install
This installs firmware in /usr/share/alsa/firmware
. I don't understand how people can be this brain-damaged and still remember how to push things up to github.
Opus
There's an Opus 1.1 now. I haven't tried it.
wget http://downloads.xiph.org/releases/opus/opus-1.0.1.tar.gz
tar -xvf opus-1.0.1.tar.gz
cd opus-1.0.1
./configure --enable-custom-modes
make
sudo make install
A thread-safe fftw3
TODO
JACK
ALWAYS ALWAYS ALWAYS CONFIGURE JACK WITH prefix=/usr
ONLY INSTALL ONE JACK AT A TIME
UPDATING WITHOUT REMOVING FIRST IS OK
NEVER EVER OVERWRITE JACKD1 WITH JACKD2 OR VICE-VERSA
Install the build dependencies:
sudo apt-get -y install libasound2-dev libsamplerate0-dev libsndfile1-dev libreadline6-dev libncurses5-dev qt4-dev-tools libtool libdb-dev
Only Install JACK1 or JACK2, not both!!
I recommend checking out both jack1 and jack2, so if you decide you need to switch, it isn't a big deal. But always remember you have to uninstall one before you install the other.
git clone git://github.com/jackaudio/jack2.git jackd2
git clone git://github.com/jackaudio/jack1.git jackd1
cd jack1
git submodule init
git submodule update
Decide whether you want jack1 or jack2. Refer first to http://trac.jackaudio.org/wiki/Q_differenc_jack1_jack2. It's also a good idea to read the rest of the JACK faq. Personally, I recommend Jack2 unless you plan to do audio work for more than 6 hours continually.
For jackd1:
cd jackd1
./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu
make
sudo make install
For jackd2:
(By the way, these instructions assume you'll be using the ALSA backend driver. If you plan to use a firewire audio interface, you need to build ffado, which I really don't want to help with. But I still love you.)
cd jackd2
./waf configure --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --alsa
./waf
sudo ./waf install
In case it wasn't clear enough before, only follow one of the above sets of instructions. But now that we're all hunky-dory, we can get on with qjackctl.
qjackctl
git clone git://git.code.sf.net/p/qjackctl/code qjackctl
cd qjackctl
autoreconf
./configure --enable-jack-version --enable-qt4
make
sudo make install
cd ..
Give yourself access to Realtime Scheduling
Add these lines to /etc/security/limits.conf
: (Note: I've heard that some systems are using /etc/systemd/user.conf
instead. I've not encountered this yet.)
@audio - rtprio 99 @audio - nice -19 @audio - memlock unlimited
Then add yourself to the audio group:
sudo adduser [username] audio
So on my system, I did sudo adduser david audio. Between the time you do this and the time you start using any of this software, you'll need to log completely out and back in.
LV2 components
Install dependencies:
sudo apt-get -y install graphviz-dev libglib2.0-dev libgtk2.0-dev libgtkmm-2.4-dev libgnomecanvas2-dev libdbus-1-dev libdbus-glib-1-dev libgnomecanvasmm-2.6-dev libboost-all-dev libusb-1.0-0-dev libsoup2.4-dev liblo-dev glib2.0-dev libgtkmm-2.4-dev libglibmm-2.4-dev libgnomecanvasmm-2.6-dev libflowcanvas-dev libsoup2.4-dev libdbus-glib-1-dev
git clone http://lv2plug.in/git/lv2.git
cd lv2
./waf configure
- (The “experimental” flag that was necessary is no longer so.)
./waf
sudo ./waf install
Then build Dave Robillard's repository, which has some necessary utilities and useful items:
svn co http://svn.drobilla.net/lad/trunk drobilla
cd drobilla
./waf configure
./waf
sudo ./waf install
LV2 Plugins
There are LOTS and LOTS of LV2 plugins, usable as synths, processors, mixers, routers, and so on. I'm compiling instructions for as many of them as I can; many simply won't work right now, and many I can't get to yet because, for crap's sake, I have a day job! But here are all the main ones I use.
ir.lv2
This plugin depends on zita-convolver and fftw3f. You will have to build zita-convolver yourself.
sudo apt-get -y install libfftw3-dev
wget http://kokkinizita.linuxaudio.org/linuxaudio/downloads/zita-convolver-3.1.0.tar.bz2
tar -xvf zita-convolver-3.1.0.tar.bz2
cd zita-convolver-3.1.0/libs/
make
sudo make install
Zita really does not like putting libraries where they belong.
sudo ln -s /usr/local/lib64/libzita-convolver.so /usr/lib/libzita-convolver.so.3
How the hell did you figure that out?
On a different system, YMMV. In order to figure out what symlink I needed to add, I ran this:
strace jalv http://factorial.hu/plugins/lv2/ir 2>&1 | grep libzita-convolver
This produces about 1,000 pages of output; you only need the last 2 or three. What you'll see is a bunch of failed attempts to find the relevant library:
open("/lib/tls/x86_64/libzita-convolver.so.3", O_RDONLY) = -1 ENOENT (No such file or directory) open("/lib/tls/libzita-convolver.so.3", O_RDONLY) = -1 ENOENT (No such file or directory) open("/lib/x86_64/libzita-convolver.so.3", O_RDONLY) = -1 ENOENT (No such file or directory) open("/lib/libzita-convolver.so.3", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/tls/x86_64/libzita-convolver.so.3", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/tls/libzita-convolver.so.3", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/x86_64/libzita-convolver.so.3", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libzita-convolver.so.3", O_RDONLY) = -1 ENOENT (No such file or directory)
Any of the locations listed in this output will do. I picked /usr/lib because it seemed the least nasty. Strictly speaking, it should go in /usr/local/lib someplace but you can see it's not getting looked for there, so that's not an option.
Back to the show
With that bit of unpleasantness out of the way, you can install the other dependencies, download ir.lv2 and compile and install it:
wget http://factorial.hu/system/files/ir.lv2-1.3.2.tar.gz
tar -xvf ir.lv2-1.3.2.tar.gz
cd ir.lv2-1.3.2/
make
sudo make install
EQ10Q
For a long time, this plugin was unmaintained, and finally became impossible to build on modern distributions. I was very sad, as this is an excellent and exceptionally powerful plugin, for one thing, as an active crossover for your sound system.
svn co svn://svn.code.sf.net/p/eq10q/code/trunk eq10q
cd eq10q
cmake ./
This last time I built it, it looked for some headers in the wrong place. Hack around:
- sudo ln -s /usr/lib/x86_64-linux-gnu/gtkmm-2.4/include/gtkmmconfig.h /usr/include/x86_64-linux-gnu/
- sudo ln -s /usr/lib/x86_64-linux-gnu/gdkmm-2.4/include/gdkmmconfig.h /usr/include/x86_64-linux-gnu/
- sudo ln -s /usr/lib/x86_64-linux-gnu/pangomm-1.4/include/pangommconfig.h /usr/lib/x86_64-linux-gnu/
- sudo ln -s /usr/lib/x86_64-linux-gnu/pangomm-1.4/include/pangommconfig.h /usr/include/x86_64-linux-gnu/
Continue:
make
sudo make install
Talentedhack
This is fun; automatic pitch correction. IMO, the latency is too high for live performance.
The tarball contains a directory that isn't the same name as the tarball, grr.
There's no configure stage.
make install
doesn't, or at least didn't in my case. I had to copy the files by hand; no big deal though.
wget http://talentledhack.googlecode.com/files/talentedhack1.85_source.tar.gz
tar -xvf talentedhack1.85_source.tar.gz
make
cd ../
sudo cp -a talentedhack.lv2 /usr/local/lib/lv2
Vee One Suite
I've removed Vee One from this page because they're still hosted on Sourceforge. If they move to a non-evil host, I'll put them back, because their stuff really is useful. But wading through Sourceforge's crap is not worth it.
Fluidsynth
As of Debian Stretch, it's just not worth it to me to figure out why fluidsynth does such a shitty job of installing itself, so I'm relying on the distribution-provided packages.
sudo apt-get -y install libtool a2jmidid fluidsynth libfluidsynth-dev
Qsynth
git clone http://git.code.sf.net/p/qsynth/code qsynth-git
cd qsynth-git
autoreconf
./configure
make
sudo make install
Swami
sudo apt-get -y install intltool librsvg2-dev libinstpatch-dev libglade2-dev
git clone https://git.code.sf.net/p/swami/code swami-code
cd swami/swami
./autogen.sh
./configure
make
sudo make install
CALF Plugin Suite
Calf has, at some point in the last 9 months, made their plugin suite work with newer versions of GCC, and they've either made qt5 work, or are forcing qt4, I'm not sure which.
Keep in mind their DSP may not work as advertised. I haven't done complete testing, but the 30-band EQ definitely generates completely wrong frequency responses. No, I haven't tried to fix it; no, I haven't opened a case upstream.
sudo apt-get -y install libgconf2-dev sfftw-dev libfftw3-dev
Now you can check out and build the CALF plugins:
git clone https://github.com/calf-studio-gear/calf.git calf
cd calf
./autogen.sh
./configure --enable-experimental --enable-sse
make
sudo make install
Then sudo make install
will complete successfully.
Ardour
Fetch the packaged dependencies:
sudo apt-get -y install uuid-dev liblrdf-dev libaubio-dev libarchive-dev libcppunit-dev liblrdf-dev libcwiid-dev libtag1-dev libtag-extras-dev vamp-plugin-sdk librubberband-dev libarchive-dev
Then check out and build Ardour:
git clone git://git.ardour.org/ardour/ardour.git ardour3
cd ardour3
./waf configure --optimize
./waf
sudo ./waf install