Csgrouper is a Perl program for Unix-like systems that generates Csound scores. It has been released for the first time in March 2012.
Many powerful sound shaping and sequencing programs exist nowadays but the western musical language in itself is almost completely worked up. The result is a repetition of well-known musical patterns in popular harmonies and a privilege 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.
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. 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 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.
Csgrouper .csd output can be further edited and processed into software more adapted for this task, such as QuteCsound or Blue.
Csgrouper could (and will) be improved in many ways. At present, it has some bugs, it’s not too well written and not easy to use. However, it is here, the code is freely available on Github and it is hoped that Perl programmers will have the desire to contribute to its development.