Chord Space for Trichords
Michael Gogins
31 January 2021
This program is an interactive 3-dimensional model of a chord space for all
3-voice chords in 12-tone equal temperament. A chord is a single point in a
space with 1 dimension for each voice of a chord; thus, any chord space for
trichords has 3 dimensions. Different equivalence classes divide this space
into different quotient spaces (or orbifolds), e.g. octave equivalence
produces a cube, permutational equivalence a prism, transpositional
equivalence a flat layer, and inversional equivalence a reflection that
folds half the space over itself. The chord space at startup is the
combination of octave equivalence and permutational equivalence (OP). See:
Callendar, Quinn, and Tymoczko, "Generalized Voice-Leading Spaces,"
Science 320, 2008.
Source code for this program may be found here.
Source code for the CsoundAC library
that implements the chord spaces and transformations may be found here.
In OP, the augmented triads form a central column (white balls). It is
surrounded by 3 columns of major triads (red balls), and 3 columns of minor
triads (blue balls); each column is a different voicing of the triad.
Neighboring chords are connected by 1-semitone voice-leadings.
Clicking on a chord selects it, plays it, and prints information about it
in the text area on the left side. Dragging the mouse with the left button
down rotates the model, dragging the mouse with the right button down moves
the model, and dragging the button with the mouse wheel down moves the model
closer to or farther away from the viewer.
The following commands are available by using the menu (or key
combinations). Please note, pressing the shift key in a key combination makes
an up movement into a down movement.
- Equivalence class
- Sets the current equivalence class of the orbifold. The possibilities are OP
(octave equivalence and permutational equivalence), OPT (octave equivalence,
permutational equivalence, and transpositional equivalence; maps to normal form),
or OPTI (octave equivalence, permutational equivalence, transpositional
equivalence, and inversional equivalence; maps to prime form).
-
- Play
- Starts running the embedded Csound synthesizer, which will play chords as
they are selected.
- Stop
- Stops Csound.
- Transpose [T]
- Transposes the selected chord up (+ key) or down (- key) by 1 semitone.
- Invert [I]
- Inverts the selected chord, i.e. reflects it in the inversion flat that
divides each OPT domain into two OPTI domains.
- Move voice 1 [1]
- Moves voice 1 of the selected chord up or down by 1 semitone.
- Move voice 2 [2]
- Moves voice 2 of the selected chord up or down by 1 semitone.
- Move voice 3 [3]
- Moves voice 3 of the selected chord up or down by 1 semitone.
- Neo-Riemannian transformations
-
- Relative [R]
- Applies the relative transformation to the selected chord, e.g. I <=> vi./dd>
- Parallel [P]
- Applies parallel transformation to the selected chord, e.g. I <=> i.
- Leading-tone exchange [L]
- Applies the leading-tone transformation to the selected chord, e.g. I <=> iii.
- Slide [S]
- Applies the slide transformation to the selected chord, e.g. I <=> i#.
- Nebenverwandt [N]
- Applies the Nebenverwandt transformation to the selected chord, e.g. I <=> iv.
- Hexpole [X]
- Applies the hexpole transformation to the selected chord, e.g. I <=> vib.
- Dominant [D]
- Not a neo-Reimannian transformation, but transposes the chord down a
perfect fifth, e.g. V => I.