|Just another Perl shrine|
I really want to share the development of this program but I realize the absence of manual can be a serious problem for people who could be interested; so I've just included the following text as a first step towards an efficient documentation.
General Introduction and quick start
The aim of this program is to offer at the same time a way to produce musical sequences with interesting mathematical properties and to experiment various tonal, modal and serial settings. Thus everything depends primarily on the serial notation: if you want to work on dodecaphonic series you will be using the dodecaphonic row whose natural expression (the chromatic scale) is "0123456789AB". And every input you will enter will have to contain signs taken within this set. For instance you could choose to ask Csgrouper to produce the sequence corresponding to the gradual suite of one series, say "769801AB3254" (which is the row used by Webern in his Quartet op. 28) so you would have to create a new row, enter this series into the main field which is named "A", choose "Gradual suite" from the row menu, most of all set the "mode" field to the chromatic scale in base 12, i.e. "0123456789AB", and choose "exp" in order to see the expanded content, otherwise only the final state of the suite would be printed and it would equal its origin in this particular case (this is a bug because the final state of a gradual suite is not its origin but the chromatic scale, being understood that the gradual suite reproduces the same permutation on its output until it reaches the first row on which the permutation was applied that is always the chromatic scale - but we don't care since nobody wants to output the chromatic scale using the non-expanded mode of a Gradual suite).
As things can reveal difficult to control while working on the "Sequences" tab, there is an analytic tab called "Series" that shows clearly the result of intended actions on serial content. So before creating a sequence it's always a good idea to check there (with help of the menu and button "Apply") that the transformation you are asking makes sense, and some most of the time do not. This is the case with static and dynamic "train" functions for which you need to input a key and a list of signs as well as a serial content. For them you will have the opportunity to introduce the two series that you want to interleaf into fields "A" and "B" of the "Series" tab and ask for "Dynana" (dynamic analysis) or "Inana" (static analysis) and these routines will output the choices of keys and signs you should input in the appropriate fields in order to obtain correct sequential "trains". Just putting any random content won't do and Csgrouper will fail, generally with some more or less instructive complaint.
The various transformation routines proposed refer to dodecaphonic content but applied to various non dodecaphonic bases. The default part for example works in base 18. These routines which will be explained soon, do things like taking the schoenbergian opposite of a row (always relatively to the chosen base) and redo the same on the output till some cycle is attained (because permutations are cyclic) : this is Gradual(Opposite). There are several other variants of such routines, and ways to transpose and mix rows together. If you want to simply introduce your own melody, use Suite(): its content will be respected but some additionnal (neutral) filling may be added at the end, so as to respect the serial structure too.
Once several sequences are created, you might want to either put some of them together, or to concatenate them. This last job is done by the "Pre" field, that allows to choose a "previous" sequence for the one that is treated. The "Set" field permits the grouping of various sequences inside a ... set. This set can then be included into one or the other Xfun fields, and the concerned sequences will receive a postreatment (on duration, amplitude, attack etc.). Sets can also be placed into Yfun fields (Rythmic-canon and Ensemble) and that will produce a structural relation between sequences. Sets can also be grouped into sections.
One thing that is impossible with Csgrouper, is to write a simple tune the way you hear it, because the duration of notes is always computed according to serial properties (or even randomness when it's chosen so). That's why I advise to use this software as a pre-composition tool, in order to hear how it would sound like to use this or that serial, tonal and modal content. Personally I use Csgrouper in order to produce some raw material that I can sculpt afterwards according to my taste.
Last but not least one shouldn't underestimate the importance of the mode field: if not appropriately filled with the whole set of authorized notes (basically the chromatic scale of your base) and the right number of them (12 if you are in base 12) Csgrouper won't output what you are waiting for. When wanting to work in a particular mode, you can replace the notes you don't want to hear by some of the other notes producing various versions of the same mode, as long as you keep the right number of notes. For instance, the Dorian mode can be achieved by setting the "mode" field to "00224557799B" but also "022445797BB9" that will output a different dorian flavour. The secret is simple, at output time notes of the indice are replaced by their content: so in the first dorian flavour C# (1) will be replaced by C (0) but in the second it will be replaced by D (2).
There are still many things to clarify but I think it will be OK for a start with Csgrouper.