# Linux Audio: A Guide For Beginner and Beyond/Appendix-List of Dependencies and Compiling Tips

This is a list of many of the widely used software packages. Mainly provided for those who compile their own packages, it lists required packages and various notes on compiling, although other users may find this information useful as well.
Some General Troubleshooting Tips

## Ardour
### Dependencies

* alsa-lib
* Boost C++ libraries
* fftw3 (without --enable-float)
* gtk2 (confirm this package name)
* jack
* liblrdf (requires: LADSPA, raptor)
* liblo
* libsamplerate
* scons
Optional:
* fftw3 (with --enable-float)
** (Note to self: Confirm this)
* (Note to self: Double check dependencies needed for VST support)

### Compiling Tips

Notes:
* The boost and gtk2 libraries are included in most sane linux distributions, so there is little chance you will need to worry about these. At most, it will involve installing a -devel package or two.
* The non float-enabled fftw3 is required for Ardour's internal libsndfile library.
* (The optional float-enabled fftw3f is required for the optional FFT analysis window feature.)

## fftw3

The Fastest Fourier in the West
A very well optimized FFT library used in a lot of packages for performing DSP routines. *NOTE* There is a version 2 of the library as well, which is incompatible with version 3.

### Dependencies

* None

### Compiling Tips

Flags:
* --enable-shared - disabled by default, this enables the shared library to be built, which is required by most software
* --enable-single - same as --enable-float
* --enable-float - this forces the library to be built with single-precision floating point numbers, and the library names beginning with fftw3 will begin with fftw3f.
Notes:
Some software require the fftw3 version of the library, and some require the fftw3f version. This may be confusing to users who are compiling this for the first time. If another software fails to detect this library, double check which version you have installed. Since a lot of software documentation does not specify which, it may be a good idea just to install both from the start and avoid confusion later.

## FFAD (formerly FreeBoB)

Free Firewire Audio Drivers
Formerly the FreeBob project (for support of BridgeCo. BeBoB devices). A backend end driver for use with firewire audio interfaces.

### Dependencies

* libraw1394
* libavc1394 (requires libraw1394)
* libiec61883 (requires libraw1394)

### Compiling Tips
## FLAC
### Dependencies

Optional:
* libogg

### Compiling Tips

This software should compile with little issue.
Note for those wishing to run the test suite, it takes a VERY long time. As a comparison, on 2.4GHz dual core system with 2GB of RAM, compiling the library takes less than a minute, but the test suite takes about 45 minutes.

## jack-audio-connection-kit

The JACK Audio Connection Kit

### Dependencies

* alsa-lib (for ALSA and OSS backends)
* FFAD (for IEEE1394 device support)
* libsndfile

### Compiling Tips

Flags:
* --enable-dynsimd - Enables SIMD instructions, such as SSE. HIGHLY recommended for any user using a Pentium II or later compiler.
* --with-default-tmpdir - Sets the default path for a shared memory directory.
Notes:
* A note on using SSE, even though the configure script will add the -sse flag, SSE and above support will not be enabled. A way to check this, if you run the jackd server, it will explicitly output SSE, SSE2, or Enhanced3DNow! detected if found. Since a good deal of JACK is SSE optimized, your best bet is to just enable it from the start. The worst thing that could happen is an illegal instruction error if your processor does not support it, in which case you can disable it.
* If the --with-default-tmpdir flag is not set, JACK will use /tmp, which is not present or not set as shared memory in some distributions. The JACK documentation recommends creating and entry in /etc/fstab for it, but for recent kernels and distributions, it may be simpler to set this to existing shared memory, such as /dev/shm.
** Note: Some pre-compiled versions already set this for you. So, if you are upgrading from a previous version of JACK, make sure everything including the installation goes in the same place. The JACK developers advise against having more than one version installed to avoid possible breakage and general confusion.

## JAMin
### Dependencies

* fftw3 (with --enable-float)
* jack
* LADSPA

### Compiling Tips
## LADSPA

The Linux Audio Developer's Simple Plugin API

### Dependencies

None

### Compiling Tips

Installation requires not compiling at all, just copying src/ladspa.h from the source tree into your /usr/include directory.
Compiling the sample plugins is completely optional.

## liblo
### Dependencies

* None

### Compiling Tips

You should have little trouble compiling this package.
* Note: While out of the scope of this book, liblo can use IPv6, which has been known to be rather unstable on some older systems. This shouldn't be a problem on any recent kernel or distribution.

## liblrdf

An XML Library

### Dependencies

* LADSPA
* Raptor

### Compiling Tips

You should have little trouble compiling this package.

## libsamplerate
### Dependencies

* fftw3 (without --enable-float)

### Compiling Tips
## libsndfile
### Dependencies

Optional:
* FLAC (version 1.1.2 - see below)

### Compiling Tips

Notes:
The current version of libsndfile requires version 1.1.2 of FLAC. A note to those who like to use the most recent versions of software, libsndfile will NOT compile with FLAC versions 1.1.3, 1.1.4 or later! This is due to the FLAC library changing the names of some key functions in the stream encoder. While designed to be easier to use, libsndfile has not been updated to use these new functions yet.

## Rosegarden
### Dependencies

* CMake
* QT3
Optional:
* DSSI
* LIRC