Csound for Linux

Mr. Phillips discusses some history as well as what's happening now in the Linux Csound world.
The CVS Repository

The next major step taken for Linux Csound was the establishment of a CVS repository. I had been complaining to Nicola that I found myself constantly checking everything coming to me in the canonical UNIX package, when he suggested the need for a revision control system. He volunteered to set it up at AIMI and after some trial-and-error hacking, he established the system we work with today. The CVS repository maintains separate directories for the canonical sources and the Linux-specific code. In this way, we can avoid rewriting sources just for Linux and we are always able to refer back to the “untouched” originals. Anonymous access to the CVS is permitted, but submissions for changes are carefully screened by the maintainer.

The Csound UNIX/Linux Development Group

Of course, a CVS development repository isn't of much use unless it has developers contributing, so a logical next step was the formation of the Csound UNIX Development group. Programmers Robin Whittle and Damien Miller joined in immediately, and Damien kindly provided a web page with all pertinent information for anyone interested in joining the group. It is worth noting that the group is for development, not just developers. We welcome anyone interested in seeing Linux Csound grow into the finest language of its kind. Programmers are certainly welcome, but so are musicians, audiophiles, DSP engineers and anyone else with an interest in Csound and its possibilities.

In October 1998, two new members made significant contributions to the group's activities. Gabriel Maldonado donated his entire source tree to the CVS repository, which enables Linux Csound to keep up with the developments for his Windows versions. (This generosity is quite typical of the Csound community. Much code sharing occurs on the Csound mail list, with new instrument designs freely offered, along with much healthy debate over various computer music issues.) The other signal addition has been Fred Floberg, whose contributions require special description.

Csound's internal support for real-time audio has been dependent on calls to the API for the OSS sound-card drivers. While certainly sufficient for casual use, many sonic notions such as full-duplex and multiplexed real-time audio I/O are not realizable by the OSS/Free driver. However, the ALSA driver does indeed support those uses; thanks to code from Fred Floberg, Linux Csound now explicitly supports the ALSA interface. (The ALSA project, led by Jaroslav Kycela, is forming a new extended sound system API compatible with OSS/Free, but permitting much more advanced uses for sound-card features not supported by OSS/Free.) Fred is currently working on expanding MIDI file support. Csound now supports only Type 0 MIDI files, but Linux Csound should soon support the Type 1 and perhaps even the Type 2 Standard MIDI File formats.

Also, thanks to Robin and Damien, the Linux Csound distribution now supports the popular RPM packaging and can be built for glibc (libc6) systems. Debian users will be pleased to note that developer G<\#252>nter Geiger has prepared a package in the DEB format. Finally, Nicola Bernardini has written a Csound orchestra (instrument design) parser, which we hope will eventually be absorbed into the package. Such a utility is most helpful to a GUI designer, which brings me to my next topic: the power of Linux Csound and X.

The X Picture

My Linux soundapps web page shows more than twenty entries in the “Csound Helpers” section. The brief descriptions which follow are just that—brief descriptions which in no way indicate the full power of these applications. The examples shown here are for Linux systems running X; some excellent command-line utilities exist too and are included on the Linux soundapps page for those tools. All of these utilities work with the current versions of Linux Csound (3.47 or higher).

Note that each of these applications was built using freely available tools. The GNU C and C++ compilers, Tcl/Tk, Java, LessTif and WINE are powerful allies in the advancement of Linux sound and MIDI software. Their developers are to be commended for the wonderful work they have done for the good of the Linux community.


Cecilia (by Jean Piche and Alexandre Burton at the University of Montréal) is a fully-developed Csound composition and sound-processing environment. Written entirely in Tcl/Tk, Cecilia utilizes the entire range of possibilities afforded by Linux Csound, presenting a beautiful graphic interface (customizable, of course) and a powerful composition language (Cybil). Numerous real-time controls are supported, nearly all aspects of the program are user-definable, excellent on-line help is available and the GUI fully exploits Tk in the X environment. Cecilia won first place in the awards for computer-aided composition and realization software at the 1997 Second International Music Software Competition in Bourges. (See Figure 1.)

Figure 1. Cecilia