
INTRODUCTION
Cecilia is a graphic environment for music and sound composition and processing that utilizes Csound for its processing and rendering engine. It was developed by Jean Piché and Alexandre Burton at the University of Montreal from 1995 through 1998; in 1997, Cecilia was awarded First Prize at the Bourges international music software competition. It is a completely programmable environment that can be used as a graphics toolkit for building your own software synthesizer, as an environment for algorithmic composition (using the built-in Cybil language), or as a straightforward front-end for Csound with support for interactive processing of soundfiles or realtime input.
Cecilia is written entirely in Tcl/Tk, a powerful multiplatform scripting language that includes a GUI/windowing toolkit (Tcl is the tool command language, Tk is the graphics toolkit). You don't need to know anything about Tcl/Tk in order to use Cecilia, but a little knowledge about the language can be helpful. Fortunately, Tcl/Tk is relatively easy to learn and powerful enough to create full-scale applications such as Cecilia. With Cecilia's Tcl/Tk source code readily available a user can in fact customize any aspect of the environment to suit his specific needs.
THE GOTCHAS
This brief article is not a tutorial about using Cecilia: the program's documentation sufficiently presents its basic operations, and a generous selection of example modules are available for application and study. However, Linux Csounders are sometimes baffled by Cecilia's installation and configuration details, so I have written this guide to assist users trying to make the Cecilia Csound front-end work on a Linux system.
I recommend acquiring the Cecilia 2.0.2 or 2.0.3 sources from Sourceforge or the MusTec ftp server, but regardless where you find Cecilia you are likely to encounter some small but frustrating problems ("gotchas") when first installing and running the program. So let's get Cecilia installed...
Follow these steps for the simplest installation procedure:
By the way, some Cecilia tarballs are available with a compiled binary. If you've found one of those packages and the binary doesn't run you can try compiling one yourself, but I recommend simply running the Tcl/Tk sources. Although Tcl/Tk is an interpreted (as opposed to compiled) language, Cecilia's code runs very quickly on modern hardware.

At this point you can try running the xcec startup script from /usr/local/lib/cecilia. If you're lucky you'll see Cecilia's very nice splash screen (see above) while the program loads itself, and if all goes well you'll be presented with Cecilia's main window [Figure 1]. From there you're on your own, but I suggest that before doing anything else you open the File/Preferences dialog and set the paths to your Csound binary and other support software [Figure 2]. Note that if you have set the Csound environment variables for soundfiles and analysis data (SFDIR, SSDIR, SADIR) you can press the 'sync to env' button to have Cecilia automatically recognize their values and default to those locations when you open a file dialog.

As I said, you'll get this far if you're lucky, but you may encounter a problem with the existence and whereabouts of the Tcl/Tk libraries. Tcl/Tk is normally included in mainstream Linux distributions, so you probably already have it on your system. However, if you run Cecilia's xcec startup script and receive this error:
bash: ./xcec: bad interpreter: No such file or directory
then you need to specify the exact file name of your Tk windowing shell in the first line of the xcec script. By default it appears thus:
#!/usr/local/bin/wish8.0
There are a couple of things to note about this line. First, the combination of the hash and exclamation characters (#!) indicates a special shell script directive that calls the wish binary. In this particular instance the hash mark is not a comment, so do not remove it. The next thing to note is that wish has a specific path and version number. You can find your wish path and version by issuing the 'locate' command. On my system 'locate wish' gives me this report:
/usr/local/bin/wish8.3 /usr/bin/wish8.3 /usr/bin/wish
The wish8.3 in /usr/local/bin is actually a link to the binary at /usr/bin/wish8.3, as is /usr/bin/wish. Therefore the first line in my xcec file looks like this:
#!/usr/bin/wish8.3
Another commonly reported problem concerns the existence of a color_xterm binary. If you select "Open Csound window" in the Csound menu and run a Cecilia module you may receive this message:
Error: couldn't execute "color_xterm": no such file or directoryFortunately you can easily resolve the problem with a simple link to any normal xterm:
ln -sf /where/you/found/xterm /where/you/want/color_xtermAgain, running 'locate xterm' will help you find your xterm binary. Also note that you may need root permission to make that link.
Finally, a word about supported Csound versions: Cecilia requires Csound 3.47 or later, but its internal opcode list is quite outdated. As a result, you may find that some of the example files will fail with errors concerning unrecognized or illegal opcodes, so be prepared to fix the code for some modules. Updating Cecilia to support current versions of Csound would be a not-too-daunting task for some ambitious hacker: the sources are available, Tcl/Tk is an easy language to learn, and glory awaits the coder who undertakes the Great Work (well, maybe not quite glory, but you'll get some recognition). Meanwhile, Cecilia is quite usable as it stands now, so go forth, acquire the package, follow the directions given in this article, and make the joyful noise. Have fun !
RESOURCES
The recommended source package for Cecilia can be found in the following locations:
More information regarding Cecilia can be found in these hard-copy resources:
If you have other questions about Cecilia and/or Linux Csound feel free to write to Dave Phillips (that's me) at dlphilp@bright.net.