Anything2Score

A Guide For The Perplexed

Dave Phillips

dlphilp@pright.net

Score-file creation is an often-discussed topic on the Csound mail-list. It seems that Csound users will go to great lengths to avoid writing score entries line by tedious line, and a number of clever dodges (no pun intended) have been devised to ease that terrible burden.

I exaggerate, of course, and it is only fitting that we use the computer itself as a composing tool in its own right. In the interest of facilitating access, here is a list of applications which generate and/or massage Csound scores. The brief descriptive comments are based solely upon my limited use of the software, and the reader is encouraged to download the software, compile it if necessary, run it if you can, and provide the authors with praise or sorely-needed constructive criticism.

Before going further I should point out that Csound already has its own score generator/masseuse, the Cscore library. It is an excellent tool for creating new scores or manipulating existing ones, but it does require some knowledge of the C programming language along with a development environment. Its usage is detailed in the Csound manual, with some instructive examples.

About the screenshots: there aren't any on this page. I'd rather you click on the URLs and check out whatever interests you. Not all of these programs have a GUI anyway, but that doesn't make them less powerful.

The applications listed run under the Linux operating system. I have indicated when versions are available for other systems, but perhaps a worthy contributor will provide Hans with another article for the 'zine, one focused on similar applications for Windows or the Mac OS. And so, with that understanding, on to the software...

Cecilia

Cecilia truly deserves its own article, but I mention it here because of its Cybil score processing language, another wonderful feature of this award-winning software from Jean PichÈ and Alexandre Burton. Here is their description of the language in the documentation:

Cybil is a score specification language that generates standard Csound numeric note lists according to a simple yet powerful syntax. A Cybil score is pre-processed each time a Csound computation is launched. Cybil can easily generate thousands of note events with just a few instructions but computation can be slow for lengthy scores.

The distribution includes a number of Cybil-produced scores. They are quite impressive, yet the language is compact and easy to learn.

Platform availability: hopefully anything that supports Tcl/Tk

Ceres

The different versions of Ceres can each save a soundfile's spectral analysis data as a Csound score file. Two formats are offered, described in Dr. Hammer's HTML help as follows:

Parmerud Csound scorefile

This specialized export was made for the Swedish composer Ake Parmerud. The frequency axis is divided into a number of "strings". As soon as the amplitude in a frequency band corresponding to a string exceeds the Trigger value, a new Csound note is written with a duration given by the Resonance value. After a number of seconds (Hysteresis), the string will again enter a trigger mode, waiting for the amplitude to exeed the threshold.

Csound scorefile

Sends the complete spectral analysis to a Csound score file. Each line represents a "pixel" as shown in the sonogram, and is formatted as follows:

i1 Starting_time Duration Frequency Amplitude

Note that "Duration" will always have the same value.

Warning! The Csound score file may become ***huge***. It is strongly recommended to do a Sieve operation first, to reduce the number of non-zero pixels.

My experience has shown that the score file can indeed grow to enormous size. The Sieve operation retains only the N strongest frequency components for each analysis window, and its use is well-advised. Note too that if varying durations are desired a small Cscore program can process the resulting file to good effect. Finally, since Ceres can import PBM images the program provides an indirect "image-to-score" conversion utility.

Platform availability: Linux, SGI

Matti Koskinen's Csound Utilities

These programs are simple in design, but quite powerful. TkScore concatenates existing Csound scores and WAV-format soundfiles into a single mega-score. An uncluttered interface provides a canvas for laying out arbitrary sequences of scores and soundfiles, represented as colored bars of proportionally varying lengths. The program calls an external version of Csound, and the resulting soundfile can be played in background while the user adjusts the placement of parts on the canvas.

rain takes any GIF image, applies various user-defined values, and translates it into a Csound score. The engine behind this magic is essentially that found in Ceres, but Matti's implementation handles a more popular image format. rain also has only one focus, making it a good choice for quick conversions.

Platform availability: anything that supports Tcl/Tk

MIDIfile to Score

Converting standard MIDI files to Csound scores is easy with either of these applications. Ruediger Bormann's excellent Midi2Cs provides a command-line interface which hides a very powerful tool. The list of supported features is too long to place here, so the reader is advised to visit Ruediger's site and read the copious on-line documentation.

Rosegarden is also feature-rich but with a more complex design and interface. It is a MIDI sequencer, with support for standard MIDI files, and it is also a common-practice music notation editor. MIDIfiles can be imported into the sequencer, displayed and edited in the notation window, and saved as Csound score files if desired. The program's interface is showing its age (a new one based on Gtk is in the works), but it is very easy to navigate, and it does provide a unique and useful tool to Csound composers working with standard notation.

Platform availability: both run on a variety of UNIX machines, Midi2Cs also runs under DOS

Silence

Michael Gogins describes his Silence as:

...an extensible system for making music on computers by means of software alone. It is an instrument for music that could not be performed, composed, or even imagined without computers. It is specifically designed to support algorithmic composition using software synthesis.

It excels at realizing and rendering numeric worlds such as Lindenmayer systems, strange attractors, and iterated functions into Csound scores. It also imports GIF images and standard MIDI files. Any and all compositional "nodes" can be freely organized, allowing the creation of very complex scores.

Platform availability: Linux, Windows95/98/NT, hopefully anywhere supporting Java

HPKComposer

Jean-Pierre Lemoine has here provided Andre Bartetzki's CMask with a very useful GUI. Scores are generated by applying tendency masks, and the implementation of CMask is greatly aided by the visualization interface. HPKComposer also provides an interface for the creation of Csound instruments, and the resulting instrument/score files can be compiled and played without leaving the program.

Platform availability: Linux, Windows95/98/NT, hopefully anywhere supporting Java

Chaosynth

Chaosynth presents the user with an interface to a cellular automaton which generates a large number of very small events. Output is similar to a form of granular synthesis, and as with Ceres, the resulting scores can be huge. The program is very easy to use, and a descriptive page is located here.

Platform availability: UNIX/Linux, Windows, Mac

Common Music

When Csound users ask about easier methods of score creation, the most typical responses seem to be "Learn (respondent's favorite language)" and "Learn Common Music". Since I have some minimal C skill I have yet to get into it, so here's what CM's developer Rick Taube has to say:

Common Music (CM) is an object-oriented music composition environment. It produces sound by transforming a high-level representation of musical structure into a variety of control protocols for sound synthesis and display: MIDI, Csound, Common Lisp Music, Music Kit, CMix, CMusic, M4C, RT, Mix, VRML and Common Music Notation. Common Music defines an extensive library of compositional tools and provides a public interface through which the composer may easily modify and extend the system. All ports of Common Music provide a text-based music composition editor called Stella. A graphical interface called Capella currently runs only on the Macintosh. See Documentation for more information.

So many experienced Csound hands swear by Common Music that I know I'll have to give it some serious time. Meanwhile, you could try it out and write another article for Hans...

Platform availability: Linux, SunOS, NeXT, Windows, DOS, MacOS, SGI

Percussion Score Generators

Eric Lyon refers to his BashFest as a virtual drum machine. I've only run the demo, but it seems powerful: a samples database is combined with a pattern data file to create a Csound score file, very quick and easy. Toby Shepard's drumachine is equally easy to use, but his design model differs: patterns are strung together into "tracks", very similar to the pattern/song model of many drum machines. Both programs allow arbitrary degrees of rhythmic complexity, while the sounds are limited only by your available collection of soundfiles. Plain, cool Csound software...

Platform availability: Linux

Tuning The Score

Peter Blasser's Rocky is a sequencer for creating Csound scores in 22-tone equal temperament. I haven't got it working completely, but it will generate and export some interesting material. I have only recently received Manuel Op de Coul's Scala for Linux and haven't yet tested it. Scala can access a large library of tunings and the homepage claims that "Exporting scale data to other music software, such as Csound, is straightforward."

Platform availability: for Rocky: Linux, Windows95/98/NT, hopefully anywhere supporting Java; for Scala: Linux, DOS/Windows, MacOS, OpenVMS, IRIX

So there you have it. This list can be considered a starting point for your own ventures into the automation of score production. Most of the packages come with source code, all are freely available, and many developers have designed their software with open extensibility in mind. These are interesting tools: they won't compose your next masterpiece, but they just might kickstart a little wonder to get you going...

Dave Phillips

Linux Sound & MIDI Applications