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.