cao generation accords
TRANSCRIPT
![Page 1: CAO Generation Accords](https://reader031.vdocument.in/reader031/viewer/2022021301/577cd94c1a28ab9e78a32a8c/html5/thumbnails/1.jpg)
7/30/2019 CAO Generation Accords
http://slidepdf.com/reader/full/cao-generation-accords 1/8
Score Generation in Voice-Leading and Chord Spaces
Michael Gogins
[email protected] Productions
Abstract
Common principles of voice-leading can be represented using
an orbifold (i.e. a quotient space) 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 , which leads to an understanding of how
to use related geometries for all trichords, higher arities of
chord, voice-leading solutions, and chord progressions. The
present work demonstrates the use of such spaces for algo-
rithmic composition. A Lindenmayer system takes an axiom
and symbol replacement rules, and recursively rewrites the
axiom by applying the rules. A turtle that represents a chord,
which moves within either a voice-leading space or a chord
progression space, then interprets the symbols in the final
production of the Lindenmayer system as commands for writ-
ing a score. This shows how score generators can work in
mathematical spaces which have intrinsic musical structure.
1 IntroductionThe use of algorithms to generate scores is as old as com-
puter music (Hiller and Isaacson 1959). Today there are many
methods of algorithmic composition (Burns 1993). They can
broadly be categorized as either grammatical, i.e. based on
some sort 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).
Some examples of mathematically-generated pieces are Viola
Elegy (Dodge 1994) and Gendy 3 (Xenakis 1995).
I find that the mathematical algorithms appeal more to my
sense of musical taste, yet I also find them difficult to controlwith respect to harmony and counterpoint, whether in the tra-
ditional sense, or in the more general sense of having large-
scale pitch structure and being well-formed. I do hear pro-
ductions from grammatical algorithms that are harmonically
and contrapuntally quite well-formed; yet to my taste, they
do not sound sufficiently original. Consequently, I have long
searched for a means of imbuing the abstract spaces used by
mathematical algorithms with intrinsic musical structure.
Recently, I chanced across Dmitri Tymoczko’s work on
the geometry of musical chords (Tymoczko 2005). He identi-
fies some mathematical spaces that do have inherent musical
structure. 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 turtlerepresenting a chord about in two related musical spaces: a
voice-leading space, and a chord progression space.
2 Musical Spaces
Tymoczko and colleagues (Tymoczko 2005; Callender,
Quinn, and Tymoczko 2006) have begun developing a geo-
metric approach to music theory. The starting point is to rep-
resent chords as points in a linear chord space, which has one
dimension of pitch per voice, distinguishing inversions, oc-
taves, and order of voices. This space extends up and down
to infinity from a reference pitch at the origin. Chord space iscontinous, and every equally tempered and non-equally tem-
pered chord can be defined in it.
Music theorists distinguish various equivalence classes for
chords. For each equivalence class (such as octave equiv-
alence, permutational equivalence, inversional equivalence,
transpositional equivalence), as well as for each combination
of equivalence classes, there is a corresponding orbifold in
chord space. The equivalence defines which points of the
space are identified to form an orbifold (Callender, Quinn,
and Tymoczko 2006).
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 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.
![Page 2: CAO Generation Accords](https://reader031.vdocument.in/reader031/viewer/2022021301/577cd94c1a28ab9e78a32a8c/html5/thumbnails/2.jpg)
7/30/2019 CAO Generation Accords
http://slidepdf.com/reader/full/cao-generation-accords 2/8
Of course, the orbifold most familiar to musicians is pitch
under octave equivalence, or pitch-class set space, R/12Z,
where the octave is defined as 12 semitones.
For another example, equivalence under range R for nvoices defines the orbifold (R/RZ)
n. I call this ranged chord
space. It has a top and bottom pitch for each voice, like a
score. Voices that move past the top of the score re-appear atthe bottom. Figure 1 shows ranged chord space for 3 voices.
Augmented triads are white, major triads red, and minor tri-
ads blue, but this is hard to see in the printed grayscale. Be-
cause its opposing faces are identified, the cube in the figure
can be considered a 3-dimensional torus.
Figure 1: Ranged chord space for 3 voices, 2 octaves
2.1 The Tonnetz
(Tymoczko 2005) has identified the orbifold that divides
pitch-class set space for n voices by the symmetry group for
n voices: (R/12Z)n /Sn. This could be called the completed
Tonnetz. Its fundamental domains are n− 1 dimensional sim-
plexes. The points of the orbifold are identified by a group
action that consists of a rotation (for odd dimensions) or a ro-
tation plus a reflection (for even dimensions). Figure 2 showsthis Tonnetz for trichords. The lines connecting chords indi-
cate movements of one semitone, so that joined chords are
closest neighbors and the lines indicate all minimal voice-
leadings.
The classical Tonnetz of Oettingen, Euler, and Riemann is
simply the six columns of major (red, dark gray as printed)
Figure 2: Tonnetz for trichords
and minor triads (blue, light gray as printed) surrounding the
central column of 4 augmented triads (white) that defines the
orthogonal “axis” of symmetry of the orbifold. One end of
the prism can also be visualized as being rotated 120◦ and
glued to the other end to form a torus.
As a generalization of the Tonnetz, (R/12Z)n /Sn 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 surround the orbifold’s axis of symmetry, but also lie
near each other. Similarly, for tetrachords, commonly used
seventh chords surround the orthogonal column of diminished
seventh chords. I find understanding the Tonnetz to be ex-tremely helpful for understanding other musical geometries.
For an in-depth derivation of these spaces and more on
their relationships to other parts of music theory, see (Ty-
moczko 2005; Callender, Quinn, and Tymoczko 2006).
My approach here is inspired by Tymoczko’s work, al-
though I derive other spaces in order to represent the specific
operations that I require for score generation.
2.2 Representing Scores and Musical Opera-
tions
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.
I do not directly use the completed Tonnetz as a space
for compositional algorithms, although it deserves further in-
vestigation for that purpose. My reason is that in the Tonnetz,
whereas a primitive operation such as a translation vector that
![Page 3: CAO Generation Accords](https://reader031.vdocument.in/reader031/viewer/2022021301/577cd94c1a28ab9e78a32a8c/html5/thumbnails/3.jpg)
7/30/2019 CAO Generation Accords
http://slidepdf.com/reader/full/cao-generation-accords 3/8
does not cross a face of the orbifold has of course always the
same orientation, if the same translation does cross a face it
can change orientation as it is reflected from a symmetry hy-
perplane. I find it simpler to use spaces in which there are
no mirrors, so that (for example) adding a vector to a chord
always moves it along the same orientation, whether or not
the chord is near a face of the quotient space.I have found two spaces to be the most useful for rep-
resenting the primitive operations executed by Lindenmayer
systems: ranged chord space, which I use to find voice-leading
solutions (so it could also be called voice-leading space), and
normal chord space (defined below), which I use to imple-
ment chord progressions (so it could also be called chord pro-
gression space).
Other properties of music may also, for convenience in
implementing algorithms, be represented as additional, higher
dimensions of chord space. For example, three dimensions
(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) maybe used to represent the durations of each voice in the chord.
And so on. However, throughout the present work, pitch will
always be represented in the lower subspace, and it is this sub-
space that is be meant when referring to “chord space” even
if additional dimensions are in fact used to represent music.
2.2.1 Voice-Leading in Ranged Chord Space
Tymoczko defines a normlike total preorder for voice-
leadings within the completed Tonnetz, first by smoothness
(distance between chords, using either the taxicab norm or
the Euclidean norm), and then by parsimony (fewer or shorter
movements of voices). Every known measure of voice-leadingsize creates a normlike total preorder (Tymoczko 2005), but
Tymoczko’s measure has the advantage of being very simple.
I have used this normlike ordering to implement a sim-
ple algorithm for finding the closest voice-leading in ranged
chord space from a source chord to a target pitch-class set.
Such algorithms can be very useful in score generators. Keep
in mind that each voice of the source chord could be in any
octave of the space’s range. Because both the Tonnetz and
ranged chord space inherit their metric from the same parent,
Euclidean space, it follows that the normlike total preorder
for voice-leadings in the Tonnetz also exists in ranged chord
space.
1. Store the source chord and target pitch-class set.
2. Generate the lattice of all chords within ranged chord
space that match the target pitch-class set, by iterating
octavewise through all points in the space and storing
the matching chords.
3. Compare the voice-leading from each chord in the lat-
tice to the source chord, first by smoothness, then by
parsimony (it is easy to add the option of excluding
parallel fifths). My current implementation uses a brute
force search to compare voice-leading sizes, but as long
as this need not be done in real time, it is fast enough.
4. Return the target chord with the closest voice-leading.
Of course, with its chord-by-chord solutions, this algorithm
does not perform backtracking to obtain voice-leadings that
are optimal across a span of chords as do such rule-based
counterpoint generators as (Schottstaedt 1984) or some of its
descendants. But it would be easy to add memory to find
voice-leadings that are optimal across a span of chords.
2.2.2 Chord Progression in Normal Chord Space
Just as ranged chord space is a space in which applying a
given voice-leading translation to any chord always produces
the same pitch-class set, it is valuable to have a space in whichapplying a given chord-progression translation to any chord
always produces the same pitch-class set. I call such a space
normal chord space (not to be confused with normal order
for chords!). This space can be formed by dividing the fun-
damental domains of the completed Tonnetz into symmetrical
“kites” and stacking them on top of each other, as shown in
Figure 3 for trichords.
Figure 3: Normal chord space for trichords
Both in the Tonnetz for trichords and in normal chord
space, a chord transposition is simply a translation along the
orthogonal “axis” of the quotient space. To illustrate reflec-
tion from the orbifold mirrors, in the Tonnetz for trichords
this translation is performed without distinguishing the inver-
sion of the chord. For example, starting with the major triad
![Page 4: CAO Generation Accords](https://reader031.vdocument.in/reader031/viewer/2022021301/577cd94c1a28ab9e78a32a8c/html5/thumbnails/4.jpg)
7/30/2019 CAO Generation Accords
http://slidepdf.com/reader/full/cao-generation-accords 4/8
{−3, 1, 4} and progressing upwards by semitones, the triad
will move step by step up one column of major triads (root
position), then rotate 120◦ to the second column (first reflec-
tion) and divide by the modulus of the space to appear at the
bottom of the column and move step by step up that column,
then rotate 120◦ to the third column (second reflection) and
divide to appear at the bottom of the column to move step bystep 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
shifted down an octave 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}
2.2.3 An Example of Use
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. This enables composers to easily switch
back and forth between thinking of pitch-class sets and think-
ing of their permutations, 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
spaces, the following steps implement the common composi-
tional moves of beginning with a known source chord, choos-
ing a progression to a target pitch-class set, and finding the
chord that provides the closest voice-leading from the source
chord to that 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 musician’s sense, by moving its lowest
voice up an octave) till it is closest to the orthogonal
“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 with a modulus
that depends on the range of the resulting chord. Per-
form the translation that produces the desired progres-
sion. For example, the V–I progression is produced by
moving 5 semitones orthogonally up the colum of ma- jor triads in normal chord space, e.g. A to D is
(9, 13, 16) + (5, 5, 5) = (14, 18, 21)
− 14 / 12(12, 12, 12)
= (2, 6, 9).
In other words, if the first voice of the resulting chord
goes up (or down) out of its original octave, the whole
chord is shifted down (or up) back into the original oc-
tave. For another example, the ii–V progression is pro-
duced by moving 5 semitones orthogonally up the col-umn of minor triads, then moving 1 semitone up in the
2nd voice to change the chord to a major triad, so the
translation vector is (5, 6, 5).
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, using the
voice-leading algorithm described above.
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 thosespaces have intrinsic musical intelligibility — there is no need
for the further step of an arbitrary mapping from the mathe-
matical results onto musical semantics. I will return to this
point later.
![Page 5: CAO Generation Accords](https://reader031.vdocument.in/reader031/viewer/2022021301/577cd94c1a28ab9e78a32a8c/html5/thumbnails/5.jpg)
7/30/2019 CAO Generation Accords
http://slidepdf.com/reader/full/cao-generation-accords 5/8
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 atomwith no replacement is replaced by itself, and the number of
iterations 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.
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, Jones, et al. 2005), and
CsoundVST, an extended version of Csound 5.0 with Python
scripting and some facilities for mathematically-based algo-
rithmic 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 as
a 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 step
points in a new direction.
In the present work, the turtle moves in an n-dimensional
chord space. Sometimes the turtle is moving voicewise in
ranged chord space (V commands), or voice-leading space,
and sometimes it is moving chordwise in normal chord space
(P commands), or chord progression space. Chords are cre-
ated with the C commands. The Ca command creates a chord
at the current position of the turtle in ranged chord space.
The Cv command creates the chord equivalent to the target
pitch-class set that is closest to the current position of the tur-
tle according to Tymoczko’s measure, using the voice-leading
algorithm described above.Because each operation is defined on one or another quo-
tient of chord space, all operations can actually be performed
on points in chord space alone, using ordinary matrix arith-
metic. The actual quotient space is defined by the specific
modulus or other action that identifies points in the space.
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 upa C major chord, then create a IM7 ii7 V7 VIM7 progression
(Figure 4).
Figure 4: Progression
A sequence of these progressions can be created using a
simple Lindenmayer system with one substitution rule (Table
3, Figure 5). Note the smooth voice-leading. Note also howthe voices spread out because the voice-leading algorithm is
concerned only with smoothness and parsimony, and not at
all with range. This of course could be changed.
Figure 5: Sequence
Table 4 and Figure 6 show how the V commands can move
![Page 6: CAO Generation Accords](https://reader031.vdocument.in/reader031/viewer/2022021301/577cd94c1a28ab9e78a32a8c/html5/thumbnails/6.jpg)
7/30/2019 CAO Generation Accords
http://slidepdf.com/reader/full/cao-generation-accords 6/8
Chord Creation
Ca Write chord at current absolute position of tur-
tle in ranged chord space.
Cv Write chord with turtle’s 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−1.
P=d, x Assign x to dimension d of turtle position in
normal 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 in
normal 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 voice-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.
Tmx 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
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
voices one at a time to produce arbitrary counterpoint. In the
Lindenmayer system’s 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 apiece of 3 minutes 45 seconds. The axiom creates a major 7th
chord, then specifies an ABBA form. The [ and ] commands
push 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 independent
voices section described in Table 4, recursively constructed at
faster and faster tempos. In the B section, one of the voices
is moved before rule B is applied, which affects all subse-
quent voice-leading. At the ends of the A, D, and F sections,
the E section 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,
Iterations 2
AxiomC=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
![Page 7: CAO Generation Accords](https://reader031.vdocument.in/reader031/viewer/2022021301/577cd94c1a28ab9e78a32a8c/html5/thumbnails/7.jpg)
7/30/2019 CAO Generation Accords
http://slidepdf.com/reader/full/cao-generation-accords 7/8
Figure 6: Independent Voices
Iterations 3
Axiom C=CM7 V=4,0 V=5,1 V=6,2 V=7,3
A Cv Cv [ V=4,4 V=5,5 V=6,6
V = 7 , 7 B C v C v B C v C v ] A C vCv
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 [ V=4,4 V=5,5 V=6,6 V=7,7
Td2. Vs3,12 Ca Vs2,12 Ca
Vs1,12, Ca Vs0,12 Vs1,12
Vs2,12 Vs3,12 Ca E Tm2.0 ]
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
tonal key, or serial procedures.
These musical spaces always represent a fixed number of
voices, though dropping voices can be simulated by doubling
or silencing some (Figure 6).
The voice-leading algorithm is not flexible, so the target
chord stays close to the source chord in range, yet may wan-
der up and down the score, or gradually widen or narrow inrange.
In other words, exercising basic movements within musi-
cal spaces does not model the fine points of musical hearing
or of any musical style.
5.2 Strengths
One reader of an earlier version of this paper noted that
the simple operations described here could have been imple-
mented in any number of ways — why, therefore, do I feel
that this geometric approach is better? I think it is better be-
cause representing chords as points makes it possible, with-
out omitting information, to represent any piece of music asa function from time onto voice-leading space, or onto chord
space. Ultimately this makes it not only possible, but easy,
to manipulate all the information in a piece recursively (as
with the Lindenmayer system), or even globally, using purely
mathematical operations.
Regarding the distinction between grammatical and math-
ematical algorithms for composition, the Lindenmayer sys-
tem presented here is a hybrid. It is a generative grammar
whose production is a geometry. In previous musical Linden-
mayer systems, the productions have been geometries with-
out musical interpretation. As a final step in score generation,
each geometry was mapped onto a range of pitches, times,
voices, and so on; in other words, each dimension needed tobe given a musical interpretation. In the Lindenmayer system
presented here, the geometry has a built-in musical structure,
which removes the need for most of these additional layers
of musical interpretation. To my ear, this removes an audible
element of arbitrariness from the music.
This Lindenmayer system can focus, as it were, on coun-
terpoint by using the V commands to directly control the move-
ments of independent voices, or it can focus on harmony by
using the P commands to directly control the progression of
the chords, with or without connecting them smoothly through
the voice-leading algorithm.
To me, the most interesting musical feature of this system
is how easily recursive patterns of movement in chord space
can create top-down, hierarchical pitch structures of arbitrary
depth.
![Page 8: CAO Generation Accords](https://reader031.vdocument.in/reader031/viewer/2022021301/577cd94c1a28ab9e78a32a8c/html5/thumbnails/8.jpg)
7/30/2019 CAO Generation Accords
http://slidepdf.com/reader/full/cao-generation-accords 8/8
5.3 Future Directions
It should be straightforward to modify the voice-leading
algorithm to control range and spacing.
It would of course be useful to have a concise way to rep-
resent changing numbers of voices.
Although (as noted) these procedures do not model so-
phisticated hearing or particular styles, in the context of al-
gorithmic composition the very simplicity of the underlying
spaces and measures is a virtue, enabling the concepts to be
adapted to a wide variety of compositional procedures. These
could include chaotic dynamical systems, applying musical
filters to images or scientific data, Xenakis sieves or other
stochastic generators, and others.
The use of geometry to model voice-leading and chords
opens the composition of pitch structures up to all the re-
sources of geometric algebra, and perhaps even topology and
algebraic geometry. As far as I know, these branches of math-
ematics have not seen as much musical application as, say,
group theory.The musical spaces discussed 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.
5.4 Acknowledgments
I thank Dmitri Tymoczko for his generous patience in dis-
cussion and for helping me with the mathematics. Any errors
that remain here are of course my own. I also benefitted from
discussing earlier versions of these ideas with Drew Krauseand the members of the New York Csound Users Group.
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). Gen-
eralized chord spaces. Unpublished, http://music.
princeton.edu/˜dmitri.
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 in
Computer 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. Number NA043. New Albion
Records.
Gogins, M. (Winter 1992). Fractal music with string rewriting
grammars. News of Music 13, 146–170.
Hiller, L. and L. Isaacson (Eds.) (1959). Experimental Music:
Composition with an Electronic Computer . New York, NewYork: McGraw–Hill.
Holtzman, S. R. (1981). Using generative grammars for music
composition. Computer Music Journal 5(1), 51–64.
McCormack, J. (1996). Grammar based music composition. In
R. Stocker et al. (Eds.), From Local Interactions to Global
Phenomena, Complex Systems 96, Amsterdam. ISO Press.
Oliphaunt, T., P. Peterson, E. Jones, et 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.
Schottstaedt, B. (1984, May). Automatic species counterpoint.Technical Report STAN-M-19, Center for Computer Re-
search in Music and Acoustics, Stanford, California.
Tymoczko, D. (2005). The geometry of musical chords. Unpub-
lished, http://music.princeton.edu/̃ dmitri.
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.