Nodes
Pitch nodes
Nodes for generating, transforming, and organizing pitch material — from simple transposition to Boulez-style pitch multiplication and Ferneyhough gestural ornaments.
| Node | Inputs | Outputs | Description |
|---|---|---|---|
| Transpose | midicents pitches number interval (default: 0) |
midicents | Shifts every pitch by a fixed interval in midicents. Use 100 for a semitone, 1200 for an octave, or any value for microtonal transposition. |
| Invert | midicents pitches number pivot (default: 6000) |
midicents | Mirrors pitches around a pivot point. Each pitch is reflected so that its distance above the pivot becomes the same distance below, and vice versa. Classic twelve-tone inversion when the pivot is the axis of the row. |
| Pitch Field | midicents pitches text label (default: "") |
midicents | Creates a named, reusable pitch collection. Use it to define a harmonic field, a scale, or any fixed set of pitches that you reference from multiple places in your graph. |
| Spectral Field | number fundamental (Hz, default: 131) number num-partials (default: 16) number deviation (cents, default: 0) |
midicents | Generates a pitch collection from the harmonic series of a given fundamental. Computes N partials (fundamental × 1, 2, 3, ..., N), converts each frequency to midicents, and optionally adds random deviation in cents for spectral “blur.” |
| PC Set | list pitch-classes (0–11) | pc-set | Defines a pitch-class set — an unordered collection of pitch classes from 0 (C) to 11 (B). The foundation for set-theory operations: you can compute the normal form, prime form, interval vector, or Forte number from any PC set. |
| Tone Row | list row (12 pitch-classes) | pc-set P (prime) pc-set R (retrograde) pc-set I (inversion) pc-set RI (retrograde-inversion) |
Defines a twelve-tone serial row and automatically derives all four canonical forms: Prime, Retrograde, Inversion, and Retrograde-Inversion. Each output can be fed into Transpose or PC Transpose for further manipulation. |
| Interval Expand | midicents pitches number factor (default: 1.0) number anchor-index (default: 0) |
midicents | Scales all intervals by a multiplicative factor relative to an anchor pitch. Factor > 1 expands intervals (wider); factor < 1 contracts them (narrower). A factor of 2 doubles every interval from the anchor; 0.5 halves them. |
| PC Transpose | pc-set set number interval (0–11, default: 0) |
pc-set | Transposes a pitch-class set in the mod-12 domain. Each pitch class has the interval added modulo 12. Equivalent to T_n in pitch-class set theory. |
| PC Multiply | pc-set set number multiplier (default: 5) |
pc-set | Multiplies each pitch class by a constant modulo 12. M5 (multiply by 5) maps the circle of semitones to the circle of fourths; M7 maps it to the circle of fifths. These are the two non-trivial multiplicative operations in mod-12 pitch-class space. |
| Pitch List | midicents pitches (manual entry) | midicents | A static, manually entered sequence of pitches in midicents. Use this as a simple source node when you want to specify exact pitches rather than generate them algorithmically. |
| Pitch Multiply | pc-set set-A pc-set set-B |
midicents | Boulez-style pitch multiplication: each pitch of Set A is transposed by every interval derived from Set B. The result is the union of all transpositions — a larger pitch field that preserves the intervallic DNA of both source sets. A cornerstone technique in post-serial composition. |
| Grace Notes | midicents main-pitches number density (1–8, default: 3) number range (midicents, default: 400) number mode (0=chromatic, 1=spectral, default: 0) |
midicents (with grace-note flags) | Generates Ferneyhough-style gestural ornament clouds around main pitches. Each main pitch receives a cluster of grace notes drawn from a chromatic or spectral field within the specified range. Density controls how many grace notes surround each main pitch, creating proliferating ornamental gestures. |
| Tension | midicents pitches (default: C major triad) | number score number max number category (1–4) string label list tension-by-IC list IC-vector |
Persichetti Ch 1 interval-tension classifier. Takes a chord, emits an overall 0–5 tension score plus the four-category chord bucket (I soft / II neutral / III tense / IV strident) and a per-interval-class tension histogram. The rich editor is a live teaching view: toggle notes on a keyboard and watch the tension dial, category badge and IC breakdown update. The score output wires cleanly into BPF-style density automation so your chord's tension can drive dynamics. |
| Counter-line | midicents cantus number species (1–5) list scale (PC set) number tonic (mc) number position (above/below) number dissonance (0–1) number contrary (0–1) number seed |
midicents counter rhythm-tree rhythm number ratio list intervals number violations |
Seeded, mode-aware species 1–5 counterpoint generator. Species 1 = 1:1 (note vs note); 2 = 2:1; 3 = 4:1; 4 = suspensions (tied + step-down resolve); 5 = florid (mixed density per bar). The dissonance dial pushes the output from strict Fux (0) through modal CP (≈0.3) to Hindemith/Messiaen/dissonant CP (0.7+). Works with any PC scale — major, dorian, octatonic, Messiaen modes, hand-built sets. Editor has 11 scale presets and 6 style presets (Fux strict, Palestrina, Hindemith, Messiaen 2, Dissonant, Suspensions). |
| CP Check | midicents upper midicents lower list scale (optional) number tonic |
number score (0–1) string label number violations (total) list breakdown (8 categories) list intervals list tension list motions number pairs |
Two-voice counterpoint analyser. Walks the pair-aligned voices and emits counts for parallel 5ths, parallel 8ves, voice-crossings, unresolved strong-beat dissonances, hidden (exposed) perfects, oversized leaps, tritones, and out-of-scale notes. The 0–1 score grades Fux-strict to modernist. The tension output is a per-pair 0–5 curve — wire it to a BPF and your dynamics will breathe with your voice-leading density. |
| Imitation | midicents source number transform (P/I/R/RI) number interval (semitones) number pivot (mc) number delay (steps) list scale (optional) number tonic |
midicents dux midicents comes rhythm-tree rhythmDux rhythm-tree rhythmComes number overlap list intervals string label |
Canon / imitation at any interval + delay. One primitive covers Bach fugue answer (P at P5 delay 2), Palestrina imitation (P with tonal scale snap), 20th-c inversion canon (I at any interval), Webern-style RI, Bartók tritone canon. Rhythm trees have the delay baked in as leading/trailing rests so wiring dux+rhythmDux and comes+rhythmComes into two Voice nodes produces a playable canon directly. 9 canon presets: Bach 5th, Bach 8ve, Unison, Inv. unison, Inv. 5th, Crab, Webern RI, Bartók TT, Tonal oct. |
| Double CP | midicents upper midicents lower number interval (semitones of swap) number mode (raise lower / drop upper / split) |
midicents newUpper midicents newLower list origIntervals list newIntervals number flagged count number score string label |
Double (invertible) counterpoint: swap two voices at any interval so upper/lower exchange registers. At the 8ve (N=12): 3rds ↔ 6ths, 5th ↔ 4th (the classic trap). At the 10th (N=16): parallel 3rds become parallel 8vas — avoid them. At the 12th (N=19): parallel 3rds survive as parallel 10ths (Bach's favourite). Editor shows stacked original + inverted rolls with ⚠ flags on every pair that would break voice-leading after inversion. |
| Stretto | midicents subject number voice count (1–4) list delays per voice list intervals per voice (semitones) list transforms per voice (P/I/R/RI) number pivot (mc) list scale (optional) number tonic |
midicents voice1-4 rhythm-tree rhythm1-4 number totalLength string label |
Multi-voice canonic entrance helper. One subject in, 2–4 voices out, each with its own delay / transposition / transform. Covers fugal stretto (close imitative entries), mirror canon (I / RI transforms against the dux), and Palestrina imitation points (tonal scale-snap). All voice rhythms share the same total length via leading + trailing rests, so wiring voicen+rhythmn straight into a Voice Layer gives a playable stretto at the correct offsets. 6 presets: Classical 4-vc, Close 2-vc, Bach fugue, Webern mirror, Palestrina, Bartók TT. |
| Phase | midicents pattern (negative values = rests) number cycles number voice count (1–4) number shift per cycle list start offsets per voice |
midicents voice1-4 rhythm-tree rhythm1-4 number totalLength number patternLen string label |
Reich-style progressive phasing. Takes a short repeating pattern and emits 2–4 voices: voice 0 anchors, voice i rotates by i × shiftPerCycle notes per cycle. Voices start unified, drift apart, and (if cycles × shift is a multiple of patternLen) re-align at the end. Shift=1 reproduces Clapping Music exactly. Pattern entries ≤ 0 are rests — so you can encode percussive patterns like X X X . X X . X . X X . directly. 6 presets: Clapping, Piano Phase, Drumming, Fast drift, Full 4-vc, Re-align. |
| Chord Progression | list circles (pitch-class set cards) number root (mc, default 6000) number edo (12/24/31/48/72) number octave offset |
any chords (Chord[]) midicents pitches (flat) number stride |
Sequence of chord cards (pitch-class sets), transposed by a root and realised in an EDO. Emits stacked Chord[] for block-chord playback or flat midicents for arpeggiation. Edit visually through the same circular HarmonicCircle UI as the Preplan view — drag degrees on the circle to build each chord, re-order cards, toggle EDO. |
| Polychord | list bottom-pcs list top-pcs number interval (semitones between units, 0–11) number edo number bottom-root (mc) |
any chord midicents pitches (flat) number resonance rating (0–6) |
Two stacked chord units separated by a controlled interval (Persichetti Ch 7). The top unit is transposed up by the interval parameter. Emits Persichetti's resonance rating (cycle-of-5ths distance between the roots — 0 = consonant fusion, 6 = tritone-distant maximum tension). Editor shows two HarmonicCircles stacked vertically plus an interval slider and 6 presets (Petrushka, Fifth stack, Tritone stack, etc.). |
| Mirror | midicents pitches number pivot (mc) midicents moving pivot (optional wire) |
midicents mirror midicents doubled (contrary) midicents interleaved |
Pivot-based inversion (Persichetti Ch 8). Each pitch p is mapped to 2 × pivot − p. Scalar pivot for stationary axes (6250 = between D4 and E♭4, 6600 = F♯4 fixed point). Wire the moving-pivot input for per-note axes — useful for mirroring against a second melodic line. Three outputs: mirror only, original-then-mirror concatenated (contrary motion), and interleaved [p, mirror(p), p, mirror(p)…]. Editor is a chromatic wheel with a draggable axis and 24 keyboard-pivot presets. |
| Quartal | number root (mc) list qualities (per-layer semitones, default [5,5,5]) number 3rd below (0 / 3 / 4) number 3rd above (0 / 3 / 4) |
any chord midicents pitches number stride |
Stack of fourths (Persichetti Ch 4). Each layer is an interval in semitones added on top of the previous pitch — 5 = P4, 6 = A4/tritone, 7 = P5. Optional compound-quartal 3rd additions below the root or above the top thicken the stack without abandoning its quartal character. The classic Bill Evans "So What" chord is qualities [5,5,5] plus a major 3rd above. Editor is a tap-to-cycle brick tower with 8 presets. |
| Compound | number root (mc) list intervals (per-layer semitones, bottom to top) |
any chord midicents pitches (flat) list tensions (per-layer 0–5) number stride |
Mixed-interval chord stack with a tension curve (Persichetti Ch 8). Every layer can be any interval, and the chord's character comes from the shape of tensions from bottom to top. Pyramidal = intervals strictly decrease (M7 base, m2 apex); arch = consonant-dissonant-consonant. The graphical editor colours each layer by its Persichetti tension class (0 = gold, 5 = bright red) and overlays a live tension curve so the shape reads at a glance. 8 shape presets. |
| Pandiatonic | list scale (PC set) number root (mc) number octaves number chords number notes per chord boolean fresh (no-repeat constraint) number seed |
any chords (Chord[]) midicents pitches (flat) |
Seeded stochastic chord draws from a scale pool (Persichetti Ch 10). Generates N chords of M notes each, all drawn from the scale; the fresh flag enforces no pitch appearing twice in the same chord. Deterministic under a seed. Editor has a piano-key PC strip for scale entry, chord preview piano-roll, 11 scale presets, and a regenerate button. |
| Telescope | midicents pitches (typically a tone row) number size (notes per chord) number advance (step between chords) |
any chords midicents topRow midicents bottomRow |
Row → chord telescoping (Persichetti Ch 12). Partition a row into overlapping groups of size adjacent pitches, advancing by advance each step, and sound each group as a chord. Also emits the top-of-chord and bottom-of-chord derived rows. Editor shows the input row with partition colouring, chord preview piano-roll, and 7 size / advance presets. |
| Jins | string preset (Rast, Bayati, Hijaz, Nahawand…) list custom-cents (optional) |
list cents number span |
A maqam building-block cell (jins) — a tetrachord, trichord, or pentachord given as cents above its root. Thirteen presets cover the Arabic ajnas, from neutral-interval cells (Rast, Bayati) to diatonic ones (Nahawand, Ajam, Kurd, Hijaz). Wire two of these into Maqam Assemble to build a complete mode. |
| Maqam Assemble | list lower-jins (cents) list upper-jins (cents) number junction (default: 500) number period (default: 1200) |
list scale (cents) | Joins two ajnas at a junction note (the ghammaz) into a complete maqam or Moroccan tab' scale. Junction 500 stacks the upper cell on the fourth (conjunct); 700 on the fifth (disjunct, as in Rast). Swap the upper jins to modulate. The cents output feeds Scale Quantize. |
Studies that use these nodes
Tapiola — a pedal point and the forest above it
Sibelius's pedal point: a bass that never moves while the forest swirls above it, the Sixth's Dorian colour…
Sibelius VII — a theme that grows from its fragments
Sibelius's thematic germination: one theme revealed three notes, eight, then all sixteen at a time — and…
The Golden Cockerel — octatonic and whole-tone magic
Rimsky-Korsakov's magic scales: the octatonic as a pool, a sieve mirrored onto itself, and a cycle of triads…
Russian Easter — one chant, five backgrounds
Changing-background variations: one obikhod chant, unchanged, under a drone, two chorales, a pandiatonic…
Flight of the Bumblebee — a chromatic engine
Flight of the Bumblebee as a machine: a falling chromatic wave interleaved with its upper neighbour…
Petrushka — two keys at once, ostinati out of phase
Petrushka: the C/F♯ polychord split into two clarinets from one node, ostinati of 7, 5 and 3 notes out of…
Requiem Canticles — a rotational array
Requiem Canticles: a hexachord rotated and transposed into six rows, read across for melody and down for the…
The Black Page — statistical density
The Black Page: nested tuplets bar by bar, five against seven, a density envelope thickening the tuplets…
Inca Roads — the Lydian vamp, 19/16, and the angular line
Inca Roads: a two-chord Lydian vamp from typed chord symbols with its scale derived, a whole tune in 19/16…
Wire these nodes into a piece of your own.
Create a free account14 days of Composer Pro, no card needed. Every account opens with the Examples folder.