An interactive tool for exploring Magnus Lindberg's hexachord-and-spectrum method of generating compositional pitch material.
Magnus Lindberg, the Finnish composer, developed a pre-compositional method that combines two seemingly opposing traditions:
The result is a fixed pitch palette that is both mirror-symmetric (no tonal centre, perfectly balanced around an axis) and acoustically grounded (every note belongs to the harmonic series of an implied bass note far below). This tool lets you generate that palette for any inversionally symmetric hexachord and any base pitch, and visualise it on the 88 keys of the piano.
The 12 notes of the chord pair off around a central axis — every pitch has a counterpart at an equal distance on the other side. With no asymmetry, there is no tonal pull and no implied "tonic". The chord becomes a self-contained, balanced object.
The same 12 notes are simultaneously heard as upper partials of a single very low fundamental. This grounds the abstract symmetry in physical acoustics — the notes reinforce one another the way harmonics of a vibrating string do.
The 12-note PSC (Primary Sonority Chord) functions as structural foreground — the notes that carry the main musical argument. The added partials function as resonant background — softer, sustained, filling in the harmonic spectrum of the implied fundamental. Every foreground chord is acoustically supported by its own spectral shadow.
The system is fully deterministic — once you pick a hexachord and a base note, every other note in the scale is computed by the rules below. The worked example throughout uses set-class 6-7 (012678) with base note B1, which reproduces the example in the source paper exactly.
The hexachord is specified as a set of six pitch-class integers between 0 and 11 (its prime form). For 6-7, that's {0, 1, 2, 6, 7, 8} — i.e. two chromatic trichords a tritone apart. Assigning pitch-class 0 to C, this becomes the upper hexachord H₁: {C, C♯, D, F♯, G, G♯}.
The complementary hexachord H₂ is the six pitch classes that aren't in H₁ — simply {0,1,…,11} \ H₁. For 6-7 that gives {E♭, E, F, A, B♭, B}. Together H₁ and H₂ contain all twelve pitch classes exactly once, forming a complete aggregate.
For 6-7 specifically, H₂ is a transposition of H₁: H₂ = T₃(H₁) (shift every note up by 3 semitones). It is also an inversion: H₂ = T₁₁I(H₁) — every pair (one from H₁, one from H₂) sums to 11 mod 12. The inversional axis lies between B♭ and B. This is what gives the chord its self-symmetric, centreless quality. (Hexachords where the complement belongs to the same set-class as the original are called self-complementary.)
The 12 notes are now distributed across roughly 5 octaves, with H₂ in the lower zone and H₁ in the upper zone. The challenge: each hexachord's two internal trichords are chromatic (e.g. {E♭, E, F} and {A, B♭, B}). Stacking them as-is would form acoustically opaque clusters.
The solution is strict trichord alternation: never place two members of the same trichord consecutively. For H₂ this produces the sequence B – F – B♭ – E – A – E♭, alternating between the two trichords at every step. The resulting intervals are an exact alternation of tritone (6 semitones) and perfect fourth (5 semitones). The same logic applied to H₁ yields G♯ – D – G – C♯ – F♯ – C, and the junction between zones is itself a perfect fourth — so the 12-note voicing is uniformly spaced by 5/6 semitones throughout. The base note you pick simply transposes this entire pattern up or down.
The 12-note chord is now reinterpreted as upper partials of a single very low fundamental. The tool places the virtual fundamental approximately 18 semitones below the bass note. For a B1 voicing, that puts it at F0 ≈ 21.83 Hz — a frequency below the threshold of human pitch perception, but acoustically real as a sub-audible reinforcement. Pick a different base note and the virtual fundamental shifts in lockstep.
From the virtual fundamental, the program calculates the harmonic series — the frequencies at integer multiples (1×, 2×, 3×, …) of the fundamental. Each harmonic is converted into its nearest equal-tempered MIDI pitch:
The tool then keeps only the partials that fall in the central register — roughly between 20 semitones above the bottom of the chord and 20 semitones below the top — and drops any whose MIDI pitch already belongs to the PSC. The result is the set of "added partials" shown in yellow on the keyboard, which fill in the spectral shadow of the chord without duplicating its structural notes.
The union of the 12-note PSC and the added partials is the complete usable scale for that hexachord and base note. For 6-7 with base B1 this comes out to 23 notes; for other configurations the number varies because the partial filter depends on the chord's exact registral span. Compose freely using only those notes — that is Lindberg's pre-compositional discipline.
The PSC carries the structural argument; the partials provide the resonant atmosphere. Treat the two layers as foreground and background and the chord becomes its own acoustic ecosystem.
Pick a set-class from the dropdown. The current example is 6-7 (012678), which has two chromatic trichords separated by a tritone — the worked example in the source paper.
Type the lowest pitch of the chord using scientific pitch notation: e.g. B1, C1, E1, E♭2. (You can also type Eb2 or F#3.) The whole 12-note voicing transposes around this anchor.
p9, p11, etc., showing the harmonic number. These fill in the spectral shadow of the chord.Together, the highlighted keys are the complete usable note-set for that hexachord/base combination. Anything outside those keys lies outside the system for that configuration.
Below the keyboard, two tables show:
Use the highlighted keys as the raw material for melody and harmony. Treat H₁ and H₂ as your structural argument; treat the partials as quieter, sustained reinforcement that doesn't compete with the foreground.
The tool is fully client-side — every visitor's browser holds its own independent state, so you can share this page and many people can explore different hexachords simultaneously.
Open the interactive tool →