Cylob Music System - CMS Environment



I started programming in the first version of SuperCollider in 1998, making a simple drum machine / synth, and later a granular automatic remix tool. After a few years break, I returned to the program in 2001 (version 2 on Mac OS 9) and made a new "drum machine" with many more different sounds. Extending this further, I added 8 step sequencer modules and a much more involved synthesis system to go with it. I used this new program, named Cylob Music System 3000, to make a series of EP's which were released in 2004. After this I started to investigate the new version of SuperCollider running on Mac OS X, which, although it had a much steeper learning curve, was much more flexible in terms of sound patching and generation. Attempting to learn from my previous mistakes, I set about making a new version of my program (CMS Environment) the scope of which has grown to encompass many different ways to compose and create sound.

The CMS consists of 784 classes, the code itself coming to 4.1 MB. It remains a work in progress, having taken 5 years so far.


Overall Concepts and Usage



Most MIDI - type software sequencers follow the "cubase" model, that is to say: a single multi-channel sequencer that sends MIDI commands to internal or external synths. The output of internal synth plugins can be put through effects plugins. This difference in plugin type seems to me to be a false distinction. In CMS, there is no difference between instrument and effect, since it may very well be the case that an "effect" would be required to have some sort of note input.  In my program, any sound generating device is known as a "SoundPatch." There is no concept of a "plug-in", a SoundPatch can be played by any sequencer that requires it to produce sound. Since it is simply a block of code, there is no need for it to have a location in a virtual mixing desk. Some sequencers allow SoundPatches to be stacked (two patches played together, the output of the first going into the input of the second), which can lead to complex fm sounds, to pick just one example.

Each SoundPatch can make use of a number of modulation sources. Sometimes only the output of a simple oscillator is needed, for instance to use as an LFO. Controls fill this requirement, and can be used by any SoundPatch to affect any parameter. This together with other patching possibilities turn the whole program into something like a semi-modular synth.

As SoundPatches can be added to internal slots, so sequencers are added in the same way. There is no central sequencer, instead, different types are loaded as required into channel slots. Currently there are 4 main types of sequencer: a "drum machine" type, a step sequencer (with input from sliders), a MIDI sequencer (with note number editing), and a vocal sequencer for computer synthesized singing. (A few other experimental types are currently unfinished.)

The advantage of having lots of different , seperate sequencers in the same song is that it is easy to create polyrhythmic music. The downside is that it can be hard to control all of the sequencers together. In order to help this, the central page, or "Macro", gives some overall control, including sending simultaneous "reset" commands if needed. "Macro presets" allow transpose, mute, loop positions and other parameters for all sequencers to be stored and recalled, so that compositions can be built up in sections and played live.

There is a certain amount of conceptual blurring between SoundPatch and sequencer. Some SoundPatches can consist of a simple sequence played using other SoundPatches. Part of the contents of a step sequencer may be played as a sound. Also, a MIDI Patch (librarian for external synths) contains a simple sequencer that can change the current sound every few beats if required.

Sounds may be generated by any SuperCollider server running on the local network. In CMS, up to 16 such servers may be running (although there is no theoretical bar to many more being allowed, I don't have a need for any more myself.)

Specific Features

Here follow brief guides to each part of the program. There are more than a few "dead-ends", that is to say features that I either never use, have not been completed or don't work properly. These are not necessarily examined. I have not gone into every single detail, or tried to refer to every usable element, but have sought to explain the most important concepts.


SoundPatch A

SoundPatch B

SoundPatch Manager

Buffer Manager



MIDI Input

MIDI Patch

Joypad Input

Tuning Collection

Groove Collection




<< to Cylob Website


<< to Cyloblog


<< to Cylob MySpace page