gpojani

instrument · chord progression machine · MIDI

Attrattore

A strange attractor runs in the processor below. Each time its trajectory crosses a Poincaré section, the next chord is chosen: music theory proposes, the chaos decides, the swarm leans on the choice, and the tension curve shapes the arc.

NPverifiable
drag the processor to rotate it

Sciame swarm · Reynolds 1987

Progressione genre · mood · theory · tension

Pick a genre: its chord vocabulary, its favourite root motions and its signature idiom.

Pick a mood: it sets tempo, mode, theory, tension, voicing and rhythm, and biases which chords win.

Bottega composer's tools

5 · reharmonise

    click a chord to hear it · 🔒 locks it against compose, evolve and reharmonisation · ⟳ re-rolls it from the next event · ✎ sets any of the 180 chords · space plays

    notice

    How a chord is chosen. Four theories propose the candidates that may follow the current chord: Walter Piston's table of usual root progressions (Harmony, 1941); the neo-Riemannian transformations P, L, R and their compounds (Cohn, Journal of Music Theory 42/2, 1998); every chord within three semitones of voice leading (Tymoczko,Science 313, 2006); and chords in nearby keys weighted by Lerdahl's Tonal Pitch Space distance (2001). Each candidate's sensory dissonance is measured with the Plomp–Levelt curve in Sethares' form (1993) and compared with the tension curve (the golden arch peaks at 0.618 of the chain). Key gravity penalises tones outside the scale. The swarm adds weight to chords whose position on the circle-of-fifths dial it crowds around. Candidates are lined up dark to bright around the circle of fifths, and the point where the trajectory crosses the Poincaré section picks one: the attractor's lobe decides the colour. A fifth, combinatorial mode drops the theories and admits all 180 chords (twelve roots × fifteen qualities: triads, augmented and diminished, the five sevenths, sus2, sus4, add9, 6, m6, 7♭9), weighted only by voice-leading distance; and ✎ on any link sets any of the 180 by hand.

    Genres. Seventeen genres, each a vocabulary of chord qualities, a weighting of scale degrees, a preference for certain root motions and a signature idiom: the pop axis, rock's ♭VII (de Clercq and Temperley 2011), the twelve-bar blues, jazz ii–V–I chains (Steedman 1984), bossa nova, the gospel turnaround, neo-soul, the city-pop royal road, funk vamps, lo-fi, trance, the Andalusian cadence (Manuel 2002), tango, the baroque ground, Hollywood's chromatic mediants (Lehman 2018), ambient and metal. The idiom slider sets how often the idiom claims a slot; the rest of the chain is chosen from the genre's vocabulary by the theories and the chaos.

    Moods. Thirteen moods, each a point on Russell's circumplex of affect (valence × arousal, 1980), realised through the cues Juslin and Laukka found listeners use to hear emotion (Psychological Bulletin 129, 2003): mode, tempo, dissonance, register and articulation. Valence sets the preferred brightness on the circle of fifths and the balance of major and minor (Hevner, 1935); arousal sets tempo, rhythmic density and tension. Some moods also reharmonise: nostalgic borrows from the parallel minor, romantic and euphoric add secondary dominants, tense adds tritone substitutions. The randomiser rolls every setting at once; its slider leans the roll toward consonance (strong key gravity, low tension, a cadence) or toward dissonance (chromatic theories, high tension, extended chords, tritone substitutions, no cadence).

    Fifteen systems. Five flows drawn as strange attractors: Lorenz (1963, sections on z = ρ − 1), Rössler (1976), Thomas' cyclically symmetric attractor (1999), Chua's double-scroll circuit (1983) and Aizawa (1982). Ten more are drawn in the plane, each with its own picture and its own events: the logistic map's bifurcation diagram and cobweb (May 1976); the Hénon (1976) and Ikeda (1979) maps as point clouds; Chirikov's standard map (1979), islands in a chaotic sea; the Duffing–Ueda oscillator seen once per forcing period (1979); a double pendulum racing a ghost started 10⁻⁷ rad away; three bodies on the Chenciner–Montgomery figure eight (2000), nudged into Poincaré's chaos; Bunimovich's stadium billiard (1979), a circle when its straight sides vanish; Wolfram's rule 30 (1983), whose centre column became Mathematica's random-number generator; and Kaneko's coupled map lattice (1984), spatiotemporal chaos. The swarm is Reynolds' boids (Computer Graphics 21/4, 1987): separation, alignment and cohesion, plus a coupling that makes the boids ride the same vector field.

    The composer's tools. 1 Voicing with minimal voice leading (close, drop 2, open, spread). 2 Extensions chosen by function (major sevenths on tonic and subdominant, dominant sevenths on V, ninths, elevenths, ♯11 on major chords, thirteenths). 3 Rhythm: block, strum, arpeggios, Alberti bass, syncopated comping. 4 Bass lines: roots, root–fifth, walking with chromatic approach tones, tonic pedal. 5 Reharmonisation: secondary dominants, tritone substitution and modal interchange, plus an authentic cadence. Chords can be locked, auditioned and re-rolled; MIDI goes out on two channels with clock, and the whole chain exports as a Standard MIDI File. The engine is checked inscripts/check-chords.mts.

    The stamp says NP: asking whether any progression satisfies a set of harmonic constraints is a constraint-satisfaction problem, NP-complete in general. A proposed progression is quick to check and hard to find, so here the chaos proposes and the theory checks.

    esc

    ↑↓ move · ↵ open~ terminal · ? shortcuts

    gsh — gianni@gpojani

    manual · keyboard

    Shortcuts

    / ⌘K
    search & jump
    ~
    terminal
    C
    live channel (chat)
    J K
    next / previous transmission
    G then HZLANUXDSVW
    home · zoo · lab · atlas · network · unveiled · logic · drums · synth · vocoder · a world made of letters
    ?
    this sheet
    P
    pause / run the colony
    R
    reseed
    1–4
    Conway · HighLife · Day & Night · Anneal
    M
    listen to the colony
    ⟲ in the HUD
    homeostat: the colony matches your input variety
    click · shift-click · drag
    glider · glider gun · paint
    ↑↑↓↓←→←→BA
    first contact