Skip to content
Voro
  1. Audio
  2. Compose

Pattern

Pattern turns the timeline and a scale into a performable musical part. It covers several roles, from lead melody and bassline to chord pulses, call-and-response phrases, orbit walks, and scatter patterns, all with artist controls for density, accent, humanize, tie, mutation, voicing, and octave. It is a flexible procedural sequencer for building parts without writing every note.

Wire a timeline clock into Input 0 and a scale into Input 1. Choose a Mode for the type of part, pick a Pattern shape and Rate, then route the out voices to an instrument. For a hand-built phrase, set Pattern to custom and dial the eight Degree controls.

  • Input 0: timeline timeline clock. Required.
  • Input 1: scale scale context. Optional, keeps the part in key.
  • Output 0: out emits the pattern as note voices.
  • Mode: part role. melody, bassline, chord_pulse, call_response, orbit, or scatter.
  • Pattern: shape such as custom, ascending, descending, pendulum, triad, pentatonic, neighbor, answer, or euclid.
  • Rate: step speed from half_step to quad.
  • Rootnote: base pitch.
  • Patternlength and Stepoffset: number of steps and where the pattern starts.
  • Gate, Velocity, Density, Accent: note length, level, how many steps fire, and emphasis.
  • Humanize, Tie, Mutation: timing looseness, note ties, and gradual change.
  • Spread, Voices, Range, Inversion: voicing width, voice count, octave range, and inversion.
  • Degree1 to Degree8: the scale degrees used by the custom pattern.
  • Seed: repeatable random elements.
  • Use custom with the Degree controls to write an exact phrase, or a preset Pattern for instant results.
  • Mutation slowly evolves the phrase over time, which is good for long generative sets.
  • The same node can act as melody, bass, or chord part just by changing Mode.

Inputs

  • timeline row
    timeline_state_f32_v1
  • scale row
    scale_v1

Outputs

  • out row
    note_voices_f32_v1
Mode (Mode) Menu op('pattern').par.Mode
Default:
melody
Options:
melody, bassline, chord_pulse, call_response, orbit, scatter
Pattern (Pattern) Menu op('pattern').par.Pattern
Default:
custom
Options:
custom, ascending, descending, pendulum, triad, pentatonic, neighbor, answer, euclid
Rate (Rate) Menu op('pattern').par.Rate
Default:
step
Options:
half_step, step, double, quad
Rootnote (Rootnote) Float op('pattern').par.Rootnote
Default:
60
Range:
0 to 127
Patternlength (Patternlength) Int op('pattern').par.Patternlength
Default:
8
Range:
1 to 8
Stepoffset (Stepoffset) Int op('pattern').par.Stepoffset
Default:
0
Range:
-64 to 64
Gate (Gate) Float op('pattern').par.Gate
Default:
0.55
Range:
0 to 1
Velocity (Velocity) Float op('pattern').par.Velocity
Default:
0.8
Range:
0 to 1
Density (Density) Float op('pattern').par.Density
Default:
1
Range:
0 to 1
Accent (Accent) Float op('pattern').par.Accent
Default:
0.25
Range:
0 to 1
Humanize (Humanize) Float op('pattern').par.Humanize
Default:
0
Range:
0 to 1
Tie (Tie) Float op('pattern').par.Tie
Default:
0
Range:
0 to 1
Mutation (Mutation) Float op('pattern').par.Mutation
Default:
0
Range:
0 to 1
Spread (Spread) Float op('pattern').par.Spread
Default:
0
Range:
0 to 24
Voices (Voices) Int op('pattern').par.Voices
Default:
1
Range:
1 to 8
Range (Range) Int op('pattern').par.Range
Default:
1
Range:
0 to 4
Inversion (Inversion) Int op('pattern').par.Inversion
Default:
0
Range:
0 to 3
Seed (Seed) Int op('pattern').par.Seed
Default:
1
Range:
0 to 100000
Degree1 (Degree1) Int op('pattern').par.Degree1
Default:
0
Range:
-24 to 24
Degree2 (Degree2) Int op('pattern').par.Degree2
Default:
2
Range:
-24 to 24
Degree3 (Degree3) Int op('pattern').par.Degree3
Default:
4
Range:
-24 to 24
Degree4 (Degree4) Int op('pattern').par.Degree4
Default:
7
Range:
-24 to 24
Degree5 (Degree5) Int op('pattern').par.Degree5
Default:
4
Range:
-24 to 24
Degree6 (Degree6) Int op('pattern').par.Degree6
Default:
2
Range:
-24 to 24
Degree7 (Degree7) Int op('pattern').par.Degree7
Default:
0
Range:
-24 to 24
Degree8 (Degree8) Int op('pattern').par.Degree8
Default:
4
Range:
-24 to 24
Avoidamt (Avoidamt) Float op('pattern').par.Avoidamt
Default:
0
Range:
0 to 1