Skip to content


Subversion checkout URL

You can clone with
Download ZIP
A Perl program that generates Csound score.
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.



*** What is it?

Csgrouper is a music composition software at the intersection of polytonality,
polymodality and serialism. It is a Perl program for Unix-like systems that
generates Csound scores. It has been released for the first time in March 2012.

*** Why Csgrouper?

Many powerful sound shaping and sequencing programs exist nowadays but the
for pure sound treatment in computer aided musical research.

There is an opportunity to investigate in scaled musical forms that is the reason
for Csgrouper.

*** What does Csgrouper do?

Within a strict serial context, there are two related ways to use Csgrouper.

Alternate tunings:
Csgrouper allows the composer to produce musical sequences using different
divisions of the octave (from 2 up to 24 steps, versus 12 in the traditional
equal-tempered system). These sequences are generated from permutation
functions that work on pure frequencies (cf. note 1). You provide compatible Csound
instruments that are then integrated into the score managed by Csgrouper. Some
test instruments are provided in the package to get you started.

Csgrouper can also select specific items in a sequence tonality to produce a
mode. Classic modes are available as well as new ones.

These basic tools together with an extensible set of serial sequence
production functions (18 at present, without counting analysis functions)
allow you to create a list of sequence definitions, each of which has its own
number of intervals and optional mode, plus its own instrument, size, tempo,
development rules, and so on.

Sequences defined in this way can be grouped together into sections with various
rythmic and harmonic properties defined by you, such as grouping several sequences
into a rythmic canon, or an ensemble section using selected sub-sequences determined by
inter-sequence note relations, or via a rythmic model (binary, ternary, mixed, ...).

Finally, Csgrouper evaluates the proposed structure and prints the resulting
Csound unified score. The resulting sound file can be played directly from the GUI
or recorded to disk. The Csgrouper score, Csound scores, and instruments are all
saved into a single Csgrouper .xml config file.

In the realm of scaled music, i.e. music that can be played with
classic-like instruments, Csgrouper can help to escape a culturally-restricted,
deeply-explored context. The 7 voice/18 tone raw example and its subsequent manual
modification illustrates this aspect well enough: Csgrouper outputs algorithmic
composition taken as inspiration for a further work. Real music comes out of
creatively filtering Csgrouper output, like sculpture of stone or wood (cf. note 2).
Personally, I reprocess Csgrouper-Csound output in other, more convienient
software, such as QuteCsound or Blue.

*** Shortcomings

Csgrouper could be improved in many ways.

It has bugs. It's not easy to use. The serial functions (particularly the "train"
functions) are difficult to understand and require prior analysis through
provided subroutines (from the "Series" tab). The GUI could be better. The
program can't be run properly without also looking at some output from the terminal.

Additionnally Csgrouper is slow: expect it to take several dozen seconds to load
a short piece of a few minutes and as much time again to evaluate it before it's
ready for audio output.

Csgrouper has no test suite (but the core of it, permutational functions, should
be reliable enough: at least have they been used for several years in various contexts) .

*** Goals

I've shared this code via Github, and I'd very much like  programmers interested
by this project to help me to improve it. I'll be happy to see the project fork,
become smarter, less redundant, have a better GUI and increase in quality to
help musicians make music.


1: Cf. Csgrouper/run/sndout/xpace-flute_raw-csg.csd : This raw Csgrouper score
(and related audio output on the Csgrouper download page) is built on a a scale
of 18 notes to the octave - 1/3 tones. The serial material used was chosen for its
tonal properties which yield a harmonious aspect.

2: Csgrouper/doc/audio contains an "xpace-flute_raw-csg.mp3" and a quickly-sculpted
version of the same project renamed "ballad.mp3" as well as the corresponding score
files. As long as the successions of notes are not altered by the sculpting
(but only the octaves and sound parameters), it can be claimed that the result
has kept some degree of mathematical purity because the output of permutational
functions is preserved.

Something went wrong with that request. Please try again.