Building and installing JAMin. From scratch
1. Introduction2. Installing from scratch
3. Installing for ALT Linux Master 2.4
4. Installing for Fedora Core 3
2.1. Prerequisite software
2.1.1. pkgconfig, automake, autoconf
Important note: all of the instructions in this document assume that you are logged in as root. If not, you won't be able to install the needed libraries or programs. Before you start building anything you will need the latest of a few development packages. Pkgconfig is available from freedesktop.org. Just to make things much easier we're going to install all of these packages in /usr. If you understand ldconfig and the LD_LIBRARY_PATH environment variable you can install wherever you want but installing in /usr avoids much unpleasantness. The sequences of commands used to build and install these packages will look almost identical from package to package but don't become complacent, there are a few changes. The command sequences make the assumption that you are in the directory containing the tarballs. Here is the installation sequence for pkgconfig:
tar -xvzf pkgconfig*.tar.gz cd pkgconfig* ./configure --prefix=/usr make make install cd ..
In addition to pkgconfig you will need a newer version of autoconf and automake. You can get these at http://www.gnu.org/directory/autoconf.html and http://www.gnu.org/directory/automake.html respectively. To build and install do the following:
tar -xvzf autoconf-*.tar.gz cd autoconf-* ./configure --prefix=/usr make make install cd .. tar -xvzf automake-*.tar.gz cd automake-* ./configure --prefix=/usr make make install cd ..
2.1.2. ALSA
ALSA is available at http://www.alsa-project.org. You want to get the latest stable release. Get all 5 packages driver, library, utilities, tools, and OSS compatibility. The easiest way to build and install these is to put them all in a single directory. I made a directory called /disk2/sound and I will use that for all subsequent examples. I would suggest that if you download a new version of either JACK, JAM, or ALSA that you download new versions of the other two packages as well. This is because JACK is dependent on ALSA and JAMin is dependent on JACK. When you download the ALSA packages they will be in tar and bzip2 compressed format. Since you will probably be downloading these occasionally due to changes in JACK, JAMin, or ALSA you might want to make a script to build the packages. The following is the script that I made to configure and build the ALSA packages:
clear echo echo echo "Making ALSA drivers" echo echo bzip2 -d alsa-driver*.tar.bz2 2>/dev/null tar -xvf alsa-driver*.tar cd alsa-driver-* ./configure --with-isapnp=no --with-cards=ens1371,emu10k1,ice1712 --with-sequencer=yes make make install ./snddevices chmod 666 /dev/dsp* /dev/mixer* /dev/sequencer* /dev/midi* cd .. find . -name alsa-driver\* -a -type d -exec rm -rf {} \; cat >~/.asoundrc <<EOF pcm.ice1712 { type hw card 0 } ctl.ice1712 { type hw card 0 } EOF echo echo echo "Making ALSA libraries" echo echo bzip2 -d alsa-lib*.tar.bz2 2>/dev/null tar -xvf alsa-lib*.tar cd alsa-lib* ./configure make make install cd .. find . -name alsa-lib\* -a -type d -exec rm -rf {} \; echo echo echo "Making ALSA OSS compatibility" echo echo bzip2 -d alsa-oss*.tar.bz2 2>/dev/null tar -xvf alsa-oss*.tar cd alsa-oss* ./configure --disable-alsatest make make install cd .. find . -name alsa-oss\* -a -type d -exec rm -rf {} \; echo echo echo "Making ALSA tools" echo echo bzip2 -d alsa-tools*.tar.bz2 2>/dev/null tar -xvf alsa-tools*.tar cd alsa-tools* cd envy24* ./configure --disable-alsatest make make install cd ../as10k1 ./configure make make install cd ../.. find . -name alsa-tools\* -a -type d -exec rm -rf {} \; echo echo echo "Making ALSA utilities" echo echo bzip2 -d alsa-utils*.tar.bz2 tar -xvf alsa-utils*.tar cd alsa-utils* ./configure --disable-alsatest make make install cd .. find . -name alsa-utils\* -a -type d -exec rm -rf {} \;
Kind of "wordy" isn't it? Oh well, I've always been a bit anal retentive anyway. Let's take a look at what's going on here. First, there is an implicit assumption in this script. You must be in the directory where your bzip2 compressed ALSA packages were downloaded. In my case that was /disk2/sound. Pay close attention to the ./configure line for the driver. You'll note that I am only setting up for three cards — Soundblaster PCI Live, Ensoniq AudioPCI, and the DSP24 (ice1712 just like the Delta 1010 and EWS88MT). I don't have any ISA cards and I wanted sequencer support. If you just want to compile for all possible cards leave out the --with-cards option. You need to do the ./snddevice to make the devices in the /proc/asound directory. I made a simple ~/.asoundrc file for the ice1712. Your system will be different depending on the card (or cards) you are using. The name for the pcm and ctl devices in ~/.asoundrc must match the driver id from modules.conf.
You need to read the INSTALL file in the alsa-driver-... directory (which I deleted in the above script) to get a good idea of how to configure ALSA. The following is what I added to my /etc/modules.conf file to configure my DSP24 card:
alias char-major-116 snd alias char-major-14 soundcore # ALSA portion alias snd-card-0 snd-ice1712 # OSS/Free portion alias sound-slot-0 ice1712 # OSS/Free portion - card #0 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss
This should be about the same for any single card. Just change the card type. There's a lot more specific information to be garnered by checking for your specific soundcard in the ALSA Soundcard Matrix. If you want to do things the easy way you can try the alsaconf utility. The only problem with that is that there isn't a full list of sound cards. In my case I can use the M-Audio Delta 1010 setup because I happen to know that it uses the same chipset as mine. I didn't have any problem doing it by hand though so it's up to you.
2.1.3. The GIMP Toolkit
GTK is the GIMP Tool Kit. GIMP is the GNU Image Manipulation Package (GNU is GNU's Not Unix;). Acronym hell. At any rate, in order to use JAM (don't worry, we'll get there eventually) you need version 2 of GTK+. GTK+ has it's own list of prerequisites.
2.1.3.1. Glib
Directly from www.gtk.org — "GLib is the low-level core library that forms the basis of GTK+ and GNOME. It provides data structure handling for C, portability wrappers, and interfaces for such runtime functionality as an event loop, threads, dynamic loading, and an object system." Download the latest and do the following:
tar -xvzf glib*.tar.gz cd glib* ./configure --prefix=/usr make make install cd ..
2.1.3.2. Pango
Again from www.gtk.org — "Pango is a library for layout and rendering of text, with an emphasis on internationalization. It forms the core of text and font handling for GTK+-2.0."
tar -xvzf pango*.tar.gz cd pango* ./configure --prefix=/usr make make install cd ..
2.1.3.3. ATK
Once more, from www.gtk.org — "The ATK library provides a set of interfaces for accessibility. By supporting the ATK interfaces, an application or toolkit can be used with such tools as screen readers, magnifiers, and alternative input devices."
tar -xvzf atk*.tar.gz cd atk* ./configure --prefix=/usr make make install cd ..
2.1.3.4 GTK+
One more time — "GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites."
tar -xvzf gtk+*.tar.gz cd gtk+* ./configure --prefix=/usr make make install cd ..
2.1.4. libsndfile
The latest version of libsndfile is available from Erik de Castro Lopo's page at http://www.zip.com.au/~erikd/libsndfile. Download and do this:
tar -xvzf libsndfile*.tar.gz cd libsndfile* ./configure --prefix=/usr make make install cd ..
2.1.5. FFTW
FFTW is the "Fastest Fourier Transform in the West". The FFTW package is available from http://www.fftw.org. Download version 3.X and do this:
tar -xvzf fftw-3*.tar.gz cd fftw-3* ./configure --prefix=/usr --enable-shared --enable-float make make install cd ..
If you miss the --enable-float JAM won't build properly.
2.1.6. LADSPA
LADSPA stands for Linux Audio Developer's Simple Plugin API. It is available at http://www.ladspa.org. You will want to download the LADSPA SDK instead of just the LADSPA header file.
tar -xvzf ladspa_sdk.tar.gz cd ladspa_sdk/src make make install cd .. rm -rf ladspa_sdk
This will also install some plugins in /usr/local/lib/ladspa.
2.1.7. SWH plugins
You will need Steve Harris' SWH plugins. Get them from http://plugin.org.uk/. Here's the command sequence:
tar -xvzf swh-plugins-*.tar.gz cd swh-plugins-* ./configure make install cd ..
Note that these get installed in /usr/local.
2.1.8. JACK
The JACK Audio Connection Kit is the glue that holds professional Linux audio applications together. JACK is a low latency audio server that provides a means of allowing multiple applications to use a system's sound hardware at the same time. It will also allow them to share audio among themselves. JACK is a requirement for JAMin. JACK is available from http://jackit.sourceforge.net.
tar -xvzf jack-audio-connection-kit-*.tar.gz cd jack-audio-connection-kit-* ./configure --prefix=/usr --enable-optimize make make install
Again, I'm installing in /usr. In versions of JACK later than 0.70.4 you can possibly get some xrun relief by doing this:
mkdir /mnt/ramfs cat >>/etc/fstab <<EOF none /mnt/ramfs tmpfs defaults 0 0 EOF
Then add --with-default-tmpdir=/mnt/ramfs to the JACK configure line when you build it. This may help with xruns, especially if your /tmp directory is on a reiserfs partition. The jury is still out on ext2/3.
2.2 JAMin
2.2.1. Downloading JAMin
JAMin is available as a tarball from http://sourceforge.net/projects/jamin. JAMin is a rapidly changing beast. Because of this you may want to get the JAMin software from CVS. If you decide to use CVS here are the commands to download JAMin:
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/jamin login cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/jamin co jamin
When you are prompted for a password simply press Enter.
2.2.2. Building and installing JAMin
After downloading the tarball:
tar -xvzf jamin-*.tar.gz cd jamin-* ./configure make make install
If you downloaded from CVS do the following:
cd jamin sh autogen.sh ./configure make make install
Notice that we didn't specify --prefix=/usr on the ./configure line. This is because JAMin is a program and it only needs to be in your path to run. You can put it in /usr if you want. Just remember to be consistent — do it the same way every time.
2.2.3. Configuring JAMin
JAMin has a single configuration file — jamin_ui. This file can be used to define GTK user interface customization. It is not required. There is an example loaded into ${prefix}/share/jamin/examples/jamin_ui when you do the make install. To customize that file, copy it to ~/.jamin/jamin_ui and make changes.