composer avec equations orbital
TRANSCRIPT
-
7/30/2019 Composer Avec Equations Orbital
1/8
Score Generation in Musical Orbifolds
Michael Gogins
[email protected] Productions
Abstract
Common principles of voice-leading can be represented using
orbifolds in which each point is a chord, and the smoothness
of voice-leadings corresponds to the closeness of their chords
in the space (Tymoczko 2005). The set of such voice-leadings
for the major and minor triads includes the Tonnetz. It is
natural to use related orbifolds for all trichords, higher ari-
ties of chord, and so on. The present work demonstrates the
use of such orbifolds as spaces for algorithmic composition.
A Lindenmayer system takes an axiom and symbol replace-
ment rules, and recursively rewrites the axiom by applying
the rules. A turtle that represents a chord moving within a
musical orbifold then interprets the symbols in the final pro-
duction of the Lindenmayer system as commands for writing
a score. This shows how score generators can work in math-
ematical spaces that have specifically musical structure.
1 Introduction
The use of algorithms to generate musical scores is as old
as computer music (Hiller and Isaacson 1959). Today there
are many methods of algorithmic composition (Burns 1993).
I categorize them as either grammatical, i.e. based on some
kind of generative grammer, or mathematical, i.e. based
on mathematical operations or forms such as fractals. Some
notable examples of grammatically-generated pieces are the
works of David Cope (Cope 1991; Cope 1996; Cope 2000);
of mathematically-generated pieces, Viola Elegy (Dodge 1994)
and Gendy 3 (Xenakis 1995).
To my taste, the mathematical algorithms are the more
musical, yet I find them difficult to control with respect to har-
mony and counterpoint, whether in the traditional sense, or in
the more general sense of having large-scale pitch structureand being well-formed. I do hear productions from grammat-
ical algorithms that are harmonically and contrapuntally quite
well-formed; yet to me, somehow, they never sound very
original. Consequently, I have long searched for a means of
imparting specifically musical structure to the abstract spaces
used by mathematical algorithms.
Recently, I chanced across Dmitri Tymoczkos work on
the geometry of musical chords. I believe this goes some
distance towards imbuing mathematical spaces with inherent
musical structure, and I think these spaces could be used by a
variety of mathematically based compositional algorithms.
The present work demonstrates such an algorithm, a Lin-
denmayer system that generates scores by moving a turtle
representing a chord about in two related musical orbifolds.
2 Musical Orbifolds
An orbifold is a quotient space whose points are equiva-
lent under some group action (any combination of translation,
rotation, glide rotation, and reflection) that defines a symme-
try. In other words, the group action permutes the corners of
the orbifold, thus gluing the faces of the quotient space to-
gether. For example, a strip of paper is a quotient space of
the plane; gluing two ends together creates a ring, which is
an orbifold. Giving the ends a half twist before joining them
creates a Moebius band, another orbifold.
Dmitri Tymoczko (Tymoczko 2005) introduced an orb-ifold that divides chord space by the product of the symmetry
of pitch-class sets times the octave: Rn/ (Sn (12Zn)), which
could be called the completed Tonnetz. Its fundamental do-
mains are n 1 dimensional simplexes. The vertices of theorbifold are identified by a group action that consists of a ro-
tation (for odd dimensions) or a rotation plus a reflection (for
even dimensions). Figure 1 shows this completed Tonnetz for
trichords. The lines connecting chords indicate movements
of one semitone, so that joined chords are closest neighbors
and the lines indicate all minimal voice-leadings. Tymoczko
and colleagues (Callender, Quinn, and Tymoczko 2006) are
using this approach to recast music theory in geometric form.
The classical Tonnetz of Oettingen, Euler, and Reimann issimply the six columns of major and minor triads surround-
ing the central column of 4 augmented triads parallel to the
orthogonal axis of the space; the augmented triads also define
the axis of symmetry of the orbifold. One end of the prism
can also be visualized as being rotated 120 and glued to theother end to form a torus.
-
7/30/2019 Composer Avec Equations Orbital
2/8
Figure 1: Tonnetz for trichords
As a generalization of the Tonnetz, R3/
S312Z3
illu-
minates basic symmetries and constraints of Western music.
The major and minor triads are so flexible with respect both
to harmonic progression and voice-leading because they not
only lie near each other, but also surround the orbifolds axis
of symmetry. Similarly, for tetrachords, commonly used sev-
enth chords surround the orthogonal column of diminished
seventh chords.
Tymoczko also defines a normlike size for voice-leadings,
first by smoothness (distance between chords in the Tonnetz,
using either the taxicab norm or the Euclidean norm), and
then by parsimony (fewer or shorter movements of voices).My approach here is inspired by Tymoczkos work, al-
though I derive some additional orbifolds in order to represent
specific operations I require for score generation.
2.1 Definitions
Note A sound that has a definite continuing pitch. Middle
C is the note C4 (or 60); C above middle C is another
note, C5 (or 72).
Chord A set of one or more distinct notes sounding at strictly
the same time, distinguishing octave, range, permu-
tation, inversion, and transposition. (60, 64, 67) is achord. (64, 67, 72) is a different chord. (67, 64, 60) isa different chord.
Pitch-class A pitch that does not distinguish octaves; i.e. a
pitch under octave equivalence. C4 and C5 are equiva-
lent to the pitch-class C (or 0).
Ranged chord A set of one or more distinct notes sound-
ing at strictly the same time, but where the voices are
constrained to lie within a finite tessitura; i.e. a chord
under range equivalence.
Unordered chord A chord that does not distinguish order of
voices; i.e. a chord under permutational equivalence.
(60, 64, 67) and (67, 64, 60) are equivalent to the un-ordered chord {60, 64, 67}. Voices are always listed inascending order of pitch.
Pitch-class set A chord under both octave equivalence and
permutational equivalence. The three chords mentioned
above are all equivalent to the pitch-class set {0, 4, 7}.
Inversion A reflection of a pitch or set of pitches; i.e. inver-
sional equivalence. {Eb,G} is equivalent to {Eb,Cb}.The music theorists sense of inversion.
Permutation A permutation of a set of pitches or pitch-classes.
The musicians sense of inversion.
Normal chord An unordered chord rooted in the first octave
(not to be confused with normal form). {0, 4, 7},{4, 7, 12}, and {7, 12, 16} are all equivalent to the nor-mal chord {0, 4, 7}, or the C major triad. But the F ma-jor triad is the normal chord {5, 9, 12} not {0, 5, 9},which is its pitch-class set. It is arbitrary what permu-
tation is chosen as normal. Here, it is defined as that
permutation which is closest to the orthogonal axis of
chord space. For trichords this is root position, for
other arities it may or may not be root position.
Voicing A chord produced from a pitch-class set by adding
or subtracting octaves from one or more voices, and/orpermuting the order of voices. Each voicing of a chord
has the same pitch-class set, but all else may differ.
2.2 Related Orbifolds for Musical Representa-
tion
In the present work, musical scores are represented as
functions of time onto chord space. Arpeggios, passing tones,
counterpoint, and so on are considered to be composed of
more or less fleeting or elaborated chords.
Chords are represented as points in a linear chord space,
which has one dimension of pitch per voice, distinguishing
inversions, octaves, and order of voices. This space extends
up and down to infinity from a reference pitch at the origin.
Chord space is continous, and every equally tempered and
non-equally tempered chord can be defined in it.
Other properties of music may also, for convenience in
implementing algorithms, be represented as additional, higher
dimensions of chord space. For example, three dimensions
-
7/30/2019 Composer Avec Equations Orbital
3/8
(0, 1, 2) suffice to represent the pitches of a trichord. Three
more dimensions (3, 4, 5) may be used to represent the re-
spective loudnesss of the voices. Dimensions (6, 7, 8) may
be used to represent the durations of each voice in the chord.
And so on. Throughout the present work, pitch will always
be represented in the lower subspace, and it is this subspace
that will be meant when referring to chord space even ifadditional dimensions are in fact used to represent music.
Some other basic musical objects and operations can then
be represented by one or another orbifold within chord space.
The vital point is that for each music-theoretic equivalence
class (e.g. octave equivalence, permutational equivalence, in-
versional equivalence, transpositional equivalence), and for
each combination of equivalence classes, there is a corre-
sponding orbifold in chord space. The equivalence relations
define which corners of the space are identified to form the
orbifold (Callender, Quinn, and Tymoczko 2006).
1. To repeat, chord space representsn voices of any range,
any octave, or any order of voices: it is simply R
n
, i.e.n-dimensional Euclidean space.
2. Ranged chord space (Figure 2; augmented triads are
white, major triads red, minor triads blue) is chord space
under range equivalence: Rn/TZn. This correspondsto one what might think of as the pitch space of a score
with a certain number of voices, each having the same
range. Voices dropping off the bottom of the score
reappear at the top.
3. Voice-leading space for ranged pitches (Figure 3) is
chord space under both range (perhaps > octave) andpermutational equivalence: Rn/ (Sn (TZ
n)). The ad-
ditional columns of triads reflect the fact that chordvoicings must distinguish different octaves.
4. Voice-leading space for pitch-class sets is Tymoczkos
completed Tonnetz, Rn/ (Sn (12Zn)), discussed above
(Figure 1; one end of the prism can also be visualized
as being rotated 120 and glued to the other end to forma torus). Figure 4 shows the Tonnetz for trichords em-
bedded in ranged chord space.1
5. Normal chord space is chord space under both p31mequivalence and range equivalence; for trichords, it is
R3/p31m
36Z3
. The wallpaper groupp31m iden-
tifies the fundamental domain by dividing the equilat-
eral fundamental domains of the Tonnetz into 3 kites,
one of which consists of normal chords. For other ar-
ities of chord, I do not know the exact group for each
1Although I define other orbifolds here for convenience in implementing
compositional algorithms, only the completed Tonnetz represents the voice-
leading relationships between pitch-class sets both irreducibly and unam-
biguously.
Figure 2: Ranged chord space for 3 voices, 2 octaves
Figure 3: Voice-leading space for 2 octaves of trichords
-
7/30/2019 Composer Avec Equations Orbital
4/8
Figure 4: Tonnetz for trichords embedded in ranged chord
space
arity, but I think its fundamental domain can be identi-
fied with the first permutation of the symmetric group
for the chord, Sn. Figure 5 shows normal chord space,
the kite closest to the orthogonal axis (the ends of
the kite can also be visualized as being glued together
[without rotation] to form a torus). Figure 6 shows nor-
mal chord space embedded in voice-leading space.
Figure 5: Normal chord space for trichords
Both in the Tonnetz for trichords and in normal chord
Figure 6: Normal chord space for trichords embedded in
voice-leading space
space, a chord transposition is simply a translation along the
orthogonal axis of the quotient space. In the Tonnetz for tri-
chords this translation is performed without distinguishing
the inversion of the chord. For example, starting with the ma-
jor triad {3, 1, 4} and progressing upwards by semitones,the triad will move step by step up one column of major tri-
ads (root position), then rotate 120 to the second column(first inversion) and divide by the modulus of the space to ap-
pear at the bottom of the column and move step by step up
that column, then rotate 120 to the next column (second in-
version) and divide to appear at the bottom of the column tomove step by step up that column. Hence the sequence of all
major triads is as follows, using the actual coordinates (to get
the pitch-classes, take these coordinates modulo 12):
{-3, 1, 4}
{-2, 2, 5}
{-1, 3, 6}
{0, 4, 7}
{-3, 0, 5}
{-2, 1, 6}
{-1, 2, 7}
{0, 3, 8}
{-4, 1, 5}{-3, 2, 6}
{-2, 3, 7}
{-1, 4, 8}
In normal chord space, on the other hand, the chord moves
step by step up the column of 12 major triads and then is
-
7/30/2019 Composer Avec Equations Orbital
5/8
divided by the modulus of the space to begin again at the
bottom of the same column, so the sequence of triads is:
{0, 4, 7}
{1, 5, 8}
{2, 6, 9}
{3, 7, 10}{4, 8, 11}
{5, 9, 12}
{6, 10, 13}
{7, 11, 14}
{8, 12, 16}
{9, 13, 17}
{10, 14, 18}
{11, 15, 19}
One reason polyphonic music works is that a single pitch-
class set can have permutations that lie far apart in the Ton-
netz, yet different pitch-class sets can have permutations that
lie near each other. Thus composers switch back and forthbetween thinking of pitch-class sets and thinking of their per-
mutations, in order to discover paths through the Tonnetz that
are both interesting harmonically and smooth contrapuntally.
As an example of such operations performed in different
orbifolds, the following steps implement the common com-
positional moves of beginning with a known source chord,
choosing a progression to a target pitch-class set, and finding
the target chord that provides the closest voice-leading from
the source chord to the target pitch-class set:
1. The source chord is a point in ranged chord space.
2. Reduce the source chord to its pitch-class set, then in-
vert it (in the musicians sense, by moving its lowest
voice up an octave) till it is closest to the orthogo-
nal axis of chord space, to locate the source in normal
chord space.
3. The progression between every pair of chords in nor-
mal chord space is a specific translation. Perform the
translation that produces the desired progression. For
example, the V-I progression is produced by moving
7 units orthogonally down the colum of major triads
in normal chord space, e.g. A to D is {9, 13, 16} {7, 7, 7} = {2, 6, 9}. The ii-V progression is producedby moving 5 units orthogonally up the column of minor
triads, then moving 1 unit up in the 2nd voice to change
the chord to a major triad.
4. The target has now been obtained in normal chord space.
Find the best voice-leading from the source chord to the
target pitch-class set in ranged chord space. As long
as the voice-leading does not need to be done in real
time, an exhaustive search and comparison of all bijec-
tive voice-leadings in ranged chord space is practical,
and that is the algorithm used here:
(a) Store the source chord and target pitch-class set.
(b) Generate the lattice of points within ranged chord
space that have the target pitch-classes, by iterat-ing through all points in the space and storing the
matching chords.
(c) Compare each voice-leading from the source chord
to a potential target, first by smoothness, then by
parsimony, optionally excluding parallel fifths.
(d) Return the closest target chord.
I am not claiming that musical orbifolds model all nu-
ances of the musical ear and highly developed musical styles.
My point is simply that mathematical spaces can be imbued
with musical structure such that simple operations in those
spaces have intrinsic musical intelligibility there is no needfor the further step of an arbitrary mapping from the mathe-
matical results onto musical semantics. I will return to this
point later.
3 Lindenmayer Systems
Lindenmayer systems are recursive functions that rewrite
strings (Prusinkiewicz and Lindenmayer 1991). Each Lin-
denmayer system consists of an axiom or initial string of
atoms, a table of rules each specifying how one atom is to
replaced with a string of atoms, an implicit rule that an atom
with no replacement is replaced by itself, and the number ofiterations for the recursion. In addition, some of the atoms of
the system are commands for a turtle in a turtle graphics-
like system. For example, F might mean move one step while
drawing a line, f move one step without drawing a line, +
turn right, - turn left, [ push the turtle state onto a stack, and
] pop the turtle state from the stack (pushing starts a branch;
popping returns the turtle to the branching point.)
The Lindenmayer system is iterated a the specified num-
ber times. Repeated replacements usually expand the initial
axiom into a very long string of atoms, called the production
of the system. The production is then interpreted as a program
for the turtle, which draws a figure in the space.
3.1 OL Lindenmayer Systems
In the simplest type of Lindenmayer system, or OL sys-tem, also called context-free, the replacement rules do not
depend on the state of the production on either side of the
current atom, and do not take parameters.
-
7/30/2019 Composer Avec Equations Orbital
6/8
OL systems have already been used for some time to gen-erate musical scores in spaces where time is one dimension of
the space (Holtzman 1981; Gogins 1992; McCormack 1996).
Adapting OL systems to generate scores in chord spaces,where each dimension of the space is a voice and time is
simply the sequence of chords, was straightforward. I imple-
mented the score generator using Python (van Rossum 2006),the SciPy package which provides efficient matrix arithmetic
for Python (Oliphaunt, Peterson, and at al. 2005), and Csound-
VST, an extended version of Csound 5.0 with Python script-
ing and some facilities for mathematically-based algorithmic
composition (Vercoe, ffitch, et al. 2006).
3.2 An OL Lindenmayer System for Musical
Orbifolds
In an n-dimensional space, the turtle can be defined asa position vector, the step as another vector, movement as
adding the step vector to the turtle vector, and rotation as mul-
tiplying the step vector by a rotation matrix, so that the steppoints in a new direction.
In the present work, the turtle moves in an n-dimensionalquotient space with a group action. Sometimes the turtle is
moving voicewise in ranged chord space (V commands), and
sometimes it is moving chordwise in normal chord space (P
commands). Because each operation is defined on one or an-
other orbifold of chord space, all operations can actually be
performed on points in chord space alone, using ordinary ma-
trix arithmetic. Each orbifold is defined by the specific mod-
ulus which produces the group action that glues the faces of
its quotient space together. Time is defined as the sequence of
chords, and the turtle state includes the size of the time step
(T commands). Table 1 summarizes the turtle commands.
4 Generating a Piece
The Pv and Cv turtle commands shown in Table 2 set up
a C major chord, then create a IM7 ii7 V7 VIM7 progression
(Figure 7).
Figure 7: Progression
A sequence of these progressions can be created using a
simple Lindenmayer system with one substitution rule (Table
3, Figure 8). Note the smooth voice-leading.
Table 4 and Figure 9 show how the V commands can move
voices one at a time to produce arbitrary counterpoint. In the
Chord Creation
Ca Write chord at current absolute position of tur-
tle in ranged chord space.
Cv Write chord with turtles pitch-classes, but at
smoothest voice-leading from prior chord.
Ccname Write jazz-named chord (e.g. D7b9) atsmoothest voice-leading from prior chord.Size of Turtle Step
S*x Multiply step by x.S/x Divide step by x.S=d, x Assign x to dimension d of step.Sad, x Add x to dimension d of step.Ssd, x Subtract x from dimension d of step.Smd, x Multiply dimension d of step by x.Sdd, x Divide dimension d of step by x.Orientation of Turtle Step
O+a, b Rotate turtle step by A from dimension a to b.O-a, b Rotate turtle step by A from dimension b to a.
Voice MovementVf Move turtle one step in ranged chord space.
V=d, x Assign x to dimension d of turtle.Vad, x Add x to dimension d of turtle.Vsd, x Subtract x from dimension d of turtle.Vmd, x Multiply dimension d of turtle by x.Vdd, x Divide dimension d of turtle by x.Progression of Chords
Pvv Move turtle v by adding a vector v to it,v0, . . ,vn.
P=d, x Assign x to dimension d of turtle position innormal chord space.
Pad, x Add x to dimension d of turtle position in nor-mal chord space.
Psd, x Subtract x from dimension d of position innormal chord space.
Pmd, x Multiply dimension d of turtle position by x.Pdd, x Divide dimension d of turtle position by x.Pcname Set voices of turtle to jazz-named chord (e.g.
D7b9) at smoothest voide-leading from prior
state of turtle, without sounding.
Tempo
T=x Assign x to time step size.Tax Add x to time step size.Tsx Subtract x from time step size.Tm
x Multiply time step size by x.Tdx Divide time step size by x.Branching
[ Push turtle state on stack (branch).
] Pop state off stack (return to branching point).
Table 1: Turtle Commands
-
7/30/2019 Composer Avec Equations Orbital
7/8
Iterations 1
Axiom C=CM7 Cv Pv1,2,1,2 Cv
Pv5,5,5,6 Cv Pv2,2,3,2 Cv
Table 2: Progression
Iterations 1
Axiom C=CM7 A A A
Replace A Cv Pv1,2,1,2 Cv Pv5,5,5,6 Cv
Pv2,2,3,2 Cv
Table 3: Sequence
Lindenmayer systems interpreter, voices with the same pitch
in different chords are tied. In this system, the replacement
rule for B itself includes references to B, so that 2 iterations
cause a recursive expansion of the motive. The T commands
also cause the 2nd replacement to move at a faster tempo.
Finally, Table 5 represents the Lindenmayer system for a
piece of 3 minutes 45 seconds. The axiom creates a major 7thchord, then specifies an ABB A form. The [ and ] commandspush and pop the turtle state from a stack, so that the chord
appearing before [ re-appears after ]. The A section is con-structed from the Table 3 sequence above, as well as another
similar sequence. The B section consists of the independentvoices section described in Table 4, recursively constructed at
faster and faster tempos. In the B section, one of the voicesis moved before rule B is applied, which affects all subse-quent voice-leading. At the ends of the A, D, and F sections,the Esection generates arpeggiations within some chords.
The score, code, and output from this piece can be found
at http://www.ruccas.org/index.php?Michael
Gogins.
5 Discussion
5.1 Limitations
This approach does know something about voice-leading;
but nothing about counterpoint proper, imitative procedures,
Figure 8: Sequence
Iterations 2
Axiom C=CM7 B
Replace B Td1.125 Cv Va0,2 Cv Va1,3
Va2,2 Cv B Vs3,4 Cv B Va0,2
Cv Va1,3 Va2,4 Cv Va3,3 Cv Cv
Tm1.125
Table 4: Independent Voices
Figure 9: Independent Voices
Iterations 3
Axiom C = C M 7 A C v C v [ B C v C v [
Pv0,1,0,1 B Cv Cv Cv Cv ] ]
A C v C v
Replace A F F E D D E F E Cv Cv
Replace B Td1.125 Cv Va0,2 Cv Va1,3
Va2,2 Cv B Vs3,4 Cv B Va0,2
Cv Va1,3 Va2,4 Cv Va3,3 Cv Cv
Tm1.125
Replace D Cv Pv1,2,1,2 Cv Pv2,3,2,3 Cv D
Cv
Replace E Cv [ Td2. Vs3,12 C a Vs2,12
Ca Vs1,12, Ca Vs0,12 Vs1,12Vs2,12 V s3,12 C a E T m2. ] Cv
Replace F Cv Pv1,2,1,2 Cv Pv5,5,5,6 Cv
Pv2,2,3,2 Cv F Cv
Table 5: Sample Piece
-
7/30/2019 Composer Avec Equations Orbital
8/8
tonal key, or serial procedures.
These orbifolds always represent a fixed number of voices,
though dropping voices can be simulated by doubling or si-
lencing some (Figure 9).
The voice-leading algorithm is not flexible, and always
brings the target chord into the same range as the source.
In other words, exercising basic movements within musi-cal orbifolds does not model the fine points of musical hear-
ing, or model any existing musical style.
5.2 Strengths
Recursive patterns of movement in chord space can easily
create top-down, hierarchical pitch structures.
The Lindenmayer system presented here can focus, as it
were, on counterpoint by using the V commands to directly
control the movements of the independent voices, or it can
focus on harmony by using the P commands to directly con-
trol the progression of the chords, with or without connecting
them smoothly through the voice-leading algorithm.Although as noted these procedures do not model sophis-
ticated hearing or particular styles, they do remove the need
for an additional layer of musical interpretation that in my
judgment tends to obscure the formal integrity of generated
scores. As a result, I feel that the present approach sounds
purer.
Finally, this purely geometric approach to chords and voice-
leading opens the composition of pitch structures up to all the
resources of mathematics.
5.3 Future Directions
The mathematics here is concise, yet these spaces couldsupport many other compositional algorithms, such as chaotic
dynamical systems, applying musical filters to images or sci-
entific data, Xenakis sieves or other stochastic generators, and
so on.
It would of course be nice to have a equally succinct way
to represent changing numbers of voices.
The musical orbifolds presented here represent very basic,
obvious aspects of musical structure. One wonders whether
other spaces could be designed, or discovered, that could per-
haps bear equally simple and useful, yet less obviously com-
mon and basic aspects of structure. After all, there is an in-
finity of spaces.
References
Burns, K. H. (1993). The History and Development of Algorithms
in Music Composition, 1957-1993. Ph. D. thesis, Ball State
University.
Callender, C., I. Quinn, and D. Tymoczko (2006). General-
ized chord spaces. http://music.princeton.edu/dmitri/chordspaces.pdf.
Cope, D. (1991). Computers and Musical Style. Number 6 in
Computer Music and Digital Audio. Middleton, Wisconsin:
A-R Editions.
Cope, D. (1996). Experiments in Musical Style. Number 12 inComputer Music and Digital Audio. Middleton, Wisconsin:
A-R Editions.
Cope, D. (2000). The Algorithmic Composer. Number 16 in
Computer Music and Digital Audio. Middleton, Wisconsin:
A-R Editions.
Dodge, C. (April 1994). Any Resemblance is Purely Coinciden-
tal, Audio cd Viola Elegy. New Albion Records.
Gogins, M. (Winter 1992). Fractal music with string rewriting
grammars. News of Music 13, 146170.
Hiller, L. and L. Isaacson (Eds.) (1959). Experimental Music:
Composition with an Electronic Computer. New York, New
York: McGrawHill.
Holtzman, S. R. (1981). Using generative grammars for musiccomposition. Computer Music Journal 5(1), 5164.
McCormack, J. (1996). Grammar based music composition. In
R. S. et al. (Ed.), From Local Interactions to Global Phe-
nomena, Complex Systems 96, Amsterdam. ISO Press.
Oliphaunt, T., P. Peterson, and E. J. at al. (2005). Scipy scien-
tific tools for python. http://www.scipy.org.
Prusinkiewicz, P. and A. Lindenmayer (1996 [1991]). The Algo-
rithmic Beauty of Plants. New York: Spring-Verlag. Avail-
able online at http://algorithmicbotany.org/
papers.
Tymoczko, D. (2005). The geometry of musical chords.
http://music.princeton.edu/dmitri/
voiceleading.pdf.
van Rossum, G. (2006). Python. http://www.python.org.
Vercoe, B., J. ffitch, et al. (2006). The canonical csound ref-
erence manual. http://www.csounds.com/manual/
Csound5.00 manual.pdf.
Xenakis, I. (1995). Xenakis: Ais, Gendy3, Taurhiphanie, Thallein
/ Nee, Steiger, Audio cd Gendy3. Number 45086. Neuma.