Skip to content
Voro
  1. Audio
  2. Compose

Progression

Progression is the harmony engine for a generative set. From a scale and the timeline it builds a voice-led chord progression, shaped by tension, motion, and borrowing, and emits it as chord state for other Voro nodes plus a set of playable voices. You can let it wander, seed and lock a loop, follow a played root, or type a lead-sheet progression directly.

Wire a timeline clock into Input 0 and a scale into Input 1. Choose a Mode, set the Rate at which chords change, and route chord_state into harmony followers such as Bassline, Comp, and Chord while voices drives a pad or keys instrument. For a fixed progression, set Mode to defined and type the chords into the Progression field.

  • Input 0: timeline timeline clock. Required.
  • Input 1: scale scale context. Optional, sets the key.
  • Input 2: steer a control used to follow or steer the harmony. Optional.
  • Output 0: chord_state the primary harmonic decision for downstream nodes.
  • Output 1: voices playable polyphonic voices for an instrument.
  • Mode: functional for purposeful changes, wander for free movement, follow to reharmonize around a played root, defined to play a typed progression.
  • Rate: how often the chord changes, from beat to four_bars.
  • Rootnote: key center.
  • Tension, Motion, Borrow: how spicy, how active, and how often chords are borrowed from outside the key.
  • Dejavu and Looplen: how strongly the progression locks into a repeating loop and its length.
  • Voicing, Voices, Useseventh, Octave: how the chords are voiced.
  • Velocity and Retrigger: level and whether voices retrigger on each chord.
  • Progression: the typed chord string used in defined mode, for example C Am F G.
  • Stepbeats, Steerchannel, Seed: timing of the typed progression, the steer input channel, and repeatable randomness.
  • Send chord_state to every node that should follow the harmony so the whole patch stays in key.
  • Raise Dejavu to settle a wandering progression into a memorable loop.
  • defined mode reads a lead-sheet string, while follow reharmonizes around the steered root.

Inputs

  • timeline row
    timeline_state_f32_v1
  • scale row
    scale_v1
  • steer row
    control_f32_v1

Outputs

  • chord_state row
    chord_state_v1
  • voices row
    note_voices_f32_v1
Mode (Mode) Menu op('progression').par.Mode
Default:
functional
Options:
functional, wander, follow, defined
Rate (Rate) Menu op('progression').par.Rate
Default:
bar
Options:
beat, bar, two_bars, four_bars
Rootnote (Rootnote) Float op('progression').par.Rootnote
Default:
55
Range:
0 to 127
Tension (Tension) Float op('progression').par.Tension
Default:
0.4
Range:
0 to 1
Motion (Motion) Float op('progression').par.Motion
Default:
0.5
Range:
0 to 1
Borrow (Borrow) Float op('progression').par.Borrow
Default:
0.15
Range:
0 to 1
Dejavu (Dejavu) Float op('progression').par.Dejavu
Default:
0
Range:
0 to 1
Looplen (Looplen) Int op('progression').par.Looplen
Default:
4
Range:
1 to 8
Voicing (Voicing) Menu op('progression').par.Voicing
Default:
root
Options:
root, first_inv, second_inv, spread, drop2
Voices (Voices) Int op('progression').par.Voices
Default:
4
Range:
1 to 8
Useseventh (Useseventh) Toggle op('progression').par.Useseventh
Default:
Off
Options:
Off, On
Octave (Octave) Int op('progression').par.Octave
Default:
0
Range:
-4 to 4
Velocity (Velocity) Float op('progression').par.Velocity
Default:
0.8
Range:
0 to 1
Retrigger (Retrigger) Toggle op('progression').par.Retrigger
Default:
On
Options:
Off, On
Seed (Seed) Int op('progression').par.Seed
Default:
1
Range:
0 to 100000
Steerchannel (Steerchannel) Int op('progression').par.Steerchannel
Default:
0
Range:
0 to 63
Stepbeats (Stepbeats) Float op('progression').par.Stepbeats
Default:
4
Range:
0.125 to 64
Progression (Progression) Str op('progression').par.Progression
Default:
C Am F G