Page  00000138 The Planet CCRMA software collection Fernando Lopez-Lezcano Center for Computer Research in Music and Acoustics (CCRMA), Stanford University nando@ccrma.stanford.edu, http://www-ccrma.stanford.edu/ nando/ Abstract In this paper I would like to present an overview of Planet CCRMA, a freely available collection of Open Source sound and music software packages that reflect the linux software environment I currently maintain at CCRMA. It is built on top of RedHat 7.2 and is easy to install and upgrade. Land on Planet CCRMA at http://wwwccrma.stanford. edu/planetccrma/software/ 1 Introduction Linux is becoming a very capable platform for music and sound research and production. The current 2.4 kernel with some additional patches and its surrounding unix environment can make it possible to run audio and midi applications with very low latency in an environment that is incredibly robust and stable. Audio drivers of high quality are available for many sound cards, including professional level cards at reasonable cost, that support multiple channels and digital input/output. A great variety of Open Source (and thus free as in "freedom") software packages are appearing daily that span a wide range of applications. Linux enables you to transform the very popular Intel/AMD hardware platform into powerful multitasking workstations with very little (if any) added software cost. It is not possible to condense CCRMA's computer history in a paragraph, but I'll try anyway. CCRMA traveled the path of the mainframe with the Foonly and the Samson Box - a one of a kind hardware synthesizer with four channel output - before arriving at a network of NeXT unix workstations as the core of its computing environment at the very end of the 80's1. The dream of a common computer music 11 missed all the mainframe fun, I got to CCRMA at platform with good support for sound lasted for a while but the demise of NeXT ended it. SGI and its very good sound support was also part of CCRMA for a while but it was another proprietary (and expensive) solution. Since 1996 linux has been part of CCRMA, first as a dual booting risky option to NEXTSTEP in some machines and finally as the main computing environment (in addition to the Macintosh world, of course). I have been maintaining the linux environment at CCRMA for quite a while. The very first installs used the Slackware distribution but I soon shifted to RedHat because rpms were a convenient way to manage a large number of machines while keeping them synchronized and up to date. There has always been an urgent need for documentation about the programs that are best suited for a multitude of tasks, and Juan Reyes, a Visiting Scholar at CCRMA, contributed by compiling and writing the Planet CCRMA Guides[10], an online resource for CCRMAlites that attempts to show available linux programs and how to use them. Those guides inspired me to finally start a project that I had been meaning to do for quite a while, making available the set of rpms that I had been compiling for the CCRMA machines to a wider audience, in an easy to use form. Planet CCRMA is not a distribution, but rather a set of binary (and source) rpms2 that you can add to a working RedHat install to replicate most of the linux environment we use here at CCRMA for our daily work in audio and computer music. The latest version we will be discussing installs on top of RedHat 7.2 and adds the end of 1990. 2"rpm" stands for RedHat Package Manager and is a software packaging solution that makes it easy to install, upgrade and uninstall applications. Created originally by RedHat, it is now at the core of many other linux distributions (Mandrake and SuSE come to mind). 138

Page  00000139 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

Page  00000140 Planet CCRMA include. Most of the applications that are part of Planet CCRMA assume that you are running ALSA 0.9. 3.3 The applications The Planet CCRMA package collection is by no means complete, but rather a work in progress. What follows is a list of some of the packages included at the time of this writing. I don't include version numbers because those change rather rapidly and I'm omitting references to their web sites for brevity. Please visit Planet CCRMA for tons of links - or if you want to see pretty much everything that is available for linux visit Dave Philips' web site [12]): * Snd: a very complete and configurable sound editor by Bill Schottstaedt. Anything and everything inside snd can be controlled or scripted using guile (a Scheme interpreter). Packages are available for both ALSA and OSS. * Common Music (CM) / Common Lisp Music (CLM) / Common Music Notation (CMN): three Common Lisp based packages for algorithmic composition, software synthesis and music notation. Packages are included for versions running on top of Clisp or CMUCL - two free implementations of Common Lisp - and for both ALSA and OSS sound drivers. CM was written by Rick Taube, CLM/CMN by Bill Schottstaedt. * Pd: real time midi and sound synthesis, by Miller Puckette. Packages are available for both ALSA and OSS. * Ggee: collection of very useful external objects for Pd, by Guenter Geiger. * Gem: collection of external objects for Pd for generating OpenGL graphics and video, by Mark Danks. * Muse: a MIDI/Audio sequencer with recording and editing capabilities, by Werner Schweer. * Ecasound: a software package designed for multitrack audio processing, by Kai Vehmanen. * Ecawave: a sound editor, by Kai Vehmanen. * LADSPA: the Linux Audio Developer's Simple Plugin API, by Richard W.E. Furse, Paul Barton-Davis, Stefan Westerfeld. LADSPA plugins can be used by ecasound, snd and several other programs. * Lwh plugins: a collection of LADSPA plugins, by Steve Harris. * Lilypond: a latex based music notation package. * Ogg Vorbis: a fully Open, non-proprietary, patent-and-royalty-free, general-purpose compressed audio format for high quality (44.1-48.0kHz, 16+ bit, polyphonic) audio and music. I include the latest available version. * Xmms: a sound file player with input and output plugins. This set of rpms has been compiled with the latest Ogg Vorbis support. * Timidity++: a free midi player with excellent sound quality. The rpms I build split the sound samples from the synthesis engine and include a better quality (and much larger) collection of samples. Improved version by Masanao Izumo (original version by Tuukka Toivonen) * Ceres3: a cut-and-paste spectral editor with musically enhanced graphic control over spectral activity of a sound file....and many more packages (I'm dying to include the very impressive Ardour [13]hard disk recording system by Paul Davis). In addition to music and sound related programs the Planet CCRMA package collection includes the latest versions of important additional packages: mozilla and galeon for web browsing, evolution for email, newer versions of nautilus for file browsing, lyx for easy use of the latex environment, xmovie for video playback, squeak for some courses that need it, and many others. Already working but not currently part of the distribution or installed at CCRMA is a collection of packages that deal with video, firewire input and output and animation. More fun to come! 140

Page  00000141 4 Installing Planet CCRMA 5 Conclusions One of the main goals of the Planet CCRMA software collection is that it should be easy to install. Planet CCRMA assumes you have successfully completed a RedHat 7.2 install on your machine. This is a simplified description of what you would need to do afterwards (full details in the Planet CCRMA software web pages): 1. Install the apt-get rpms. This will add aptget and related programs to your current install so that you will be able to automatically install and upgrade the rest of the Planet CCRMA packages (except for the linux kernel and sound drivers). 2. Decide what to do with your current kernel and sound drivers. If you have audio working and you are happy with its performance there is no real reason to change anything (except if you are using OSS, some of the Planet CCRMA packages work only with ALSA 0.9). You can keep your kernel and sound drivers, or keep the kernel and recompile the source rpms for the ALSA drivers, or upgrade both the kernel and sound driver with the Planet CCRMA binary packages. 3. Upgrade the kernel (if you have decided to do so). 4. Upgrade and configure your sound driver (if you have decided to do so). 5. Run "apt-get update" to synchronize with the CCRMA repository. 6. Run "apt-get dist-upgrade" to upgrade your existing packages. This step will take care of bringing your RedHat install up to date installing all pertinent security and functionality upgrades. 7. Run "apt-get install package_name" for each package you want to install. And that's it! Afterwards, running "apt-get distupgrade" will download and install upgrades for all packages you have installed (as long as upgrades are available in the ccrma repository, of course). The beauty of apt-get that Debian users already experience is that dependencies and conflicts are handled automatically, and installing one package can automatically pull all other needed packages or upgrades to existing packages. This rpm package collection is one of the tools that has helped me maintain CCRMA more or less up to date with the rest of the linux world (and sort of keep my sanity at the same time). Hopefully it will also be useful for other computer music laboratories and individuals that want to base their linux support on standard RedHat installations. References [1] Advanced Linux Sound Architecture, ALSA, http://www.alsa-project.org/ [2] OSS Free (part of the Linux kernel), http://www.linux.org.uk/OSS/ [3] Commercial OSS, http://www.opensound.com/ [4] Current: A server for Red Hat's up2date tools (http://www.biology.duke.edu/computer/unix/current/) [5] Debian linux distribution, http://www.debian.org [6] Apt-get for RPM, Conectiva, http://distro.conectiva.com/projetos/42/ [7] Low latency patches, Andrew Morton, http://www.zip.com.au/~akpm/linux/schedlat.html [8] Kernel Preemption patch, Robert M. Love, http://www.tech9.net/rml/linux/ [9] 0(1) Scheduler, Ingo Molnar, [10] Juan Reyes, The Planet CCRMA Guide, http://wwwccrma.stanford.edu/guides/planetccrma/ [11] Demudi, a Debian based multimedia distribution, http://www.demudi.org [12] Sound and MIDI Software for Linux, Dave Phillips, http://sound.condorow.net [13] Ardour, Paul Davis, http://ardour.sourceforge.net/ 141