an up to date 2.4 kernel with low latency patches
applied, current ALSA sound drivers and a collection of rpms of useful music and sound applications (if you are a Debian user you should be
looking at the Demudi [11] project instead).
2 Dependency management
A very real problem in rpm based distributions
is dependency tracking. Each binary package
declares what it needs, but usually not the name
of the package that provides for that dependency. While it is relatively easy to find and
download rpms, it is not easy to make sure you
have all the required packages installed, and it
is sometimes difficult to even know which packages are needed to install a new one. One of
the main goals of the Planet CCRMA project
is to make it as easy to install as possible, so
something had to be done with regards to dependency management. RedHat now provides a
service for remote updates to packages and dependency tracking called up2date, but while the
client is open source, the server itself is closed,
so it is not useful to us because we need to set
up a server (there is currently at least one open
source implementation of the up2date server [4],
I'll add support for it eventually).
I am currently using a port for rpm [6] of the
very useful apt-get software package that Debian [5] uses to manage its own.deb packages
(Debian ".deb" packages have roughly the same
features and functionality as RedHat "rpm"
packages). Apt-get for rpm allows you to create
a package repository and connect to it by ftp
or http from client machines (or even create a
cdrom with the software). The Planet CCRMA
repository includes the complete RedHat 7.2 distribution, all RedHat package updates and the
Planet CCRMA package collection itself. Installing packages is as simple as typing "aptget install package _name" in the command line.
If the package depends on other, not installed
packages, apt-get will ask the user for permission and download and install them if the response is positive.
3 What is included?
3.1 An audio friendly kernel
able is for a version of 2.4.9). The Planet
CCRMA kernel rpms include a newer kernel
(2.4.17-pre9 at the time of this writing) that
incorporates the latest low latency patches [7]
and several other upgrades. While this currently provides the best performance in terms
of scheduling latency, in the future the low latency support will most probably migrate to the
preemptible kernel patch [8] instead3, as well
as include a new scheduler [9] that shows a lot
of promise, specially for avoiding task bounce
between processors in multiprocessor machines.
The low latency patch currently provides for
real-world latencies of a few milliseconds in a
reasonably tuned linux system, under full load.
It is important to stress that this performance
is obtained in a loaded system, with screen updates and disk activity going on. A kernel with
proper support for low latency schedulling is obviously very important for real-time sound and
music applications that use very small audio
buffers.
3.2 The sound driver
A bit of background on sound drivers and linux.
The OSS Free sound drivers [2] are currently
part of the Linux kernel and are released under the GPL license (as is the rest of the kernel); most linux distributions use OSS to provide sound support. Another alternative that
shares the same api is the binary-only commercial OSS driver distributed by 4Front Technologies [3] and maintained by Hannu Savolainen,
the original developer of what eventually became OSS Free. The newer ALSA [1] sound
driver is also licensed under the GPL and has
a much richer API for sound and MIDI development, specially when dealing with multichannel
sound cards. A layered approach that uses a library as an intermediary to system calls adds
versatility. The ALSA drivers also include an
OSS API emulation layer that can be used to
run most legacy OSS applications. ALSA has
recently been included in the 2.5 development
kernel.
The 'sound driver of choice' for linux here at
Planet CCRMA is currently ALSA 0.9, which is
by now quite stable. This is what we are currently running at CCRMA (a CVS snapshot of
the 0.9 tree) and what the sound driver rpms of
RedHat 7.2 comes with a heavily patched 2.4 3The preemptible kernel patch has been included in
kernel (as of this writing the latest update avail- linux 2.5.
139