Skip to content
Voro
  1. Audio
  2. Compose

Motif

Motif writes a melodic line. It generates a short theme by contour, then varies it phrase after phrase with transposition, inversion, retrograde, sequencing, and thinning, while aiming at chord tones on strong beats. The result is a singable lead that grows over time instead of repeating, making it the top line of a generative band.

Wire a timeline clock into Input 0 and a scale into Input 1, then optionally add a chord so the melody lands on chord tones. Choose a Contour and a Develop mode, set the Rate, and route the voices output to a lead instrument such as Synth. The melodic contour also works as a control source for gesture-driven visuals.

  • Input 0: timeline timeline clock. Required.
  • Input 1: scale scale context. Optional but recommended for staying in key.
  • Input 2: chord_state current chord. Optional, used to target chord tones.
  • Output 0: voices emits the melodic line as note voices.
  • Contour: shape of the seed phrase. arch, rise, fall, or wander.
  • Celllen: length of the motif cell in notes.
  • Develop: how the motif evolves. none, transpose, invert, retrograde, sequence, thin, or auto.
  • Rate: note speed from whole to sixteenth.
  • Rootnote and Octave: starting pitch and register.
  • Density: how many notes of the cell actually play.
  • Chordlock: how strongly notes pull toward chord tones on strong beats.
  • Variation: how much the motif changes between phrases.
  • Gatelen, Velocity, Accent: note length, level, and emphasis.
  • Seed: makes the whole generated line reproducible.
  • auto lets Motif choose its own development moves for hands-off variation.
  • Raise Chordlock when you want the melody to clearly outline the harmony.
  • A fixed Seed regenerates the exact same line, which is useful for repeatable sets.

Inputs

  • timeline row
    timeline_state_f32_v1
  • scale row
    scale_v1
  • chord_state row
    chord_state_v1

Outputs

  • voices row
    note_voices_f32_v1
Contour (Contour) Menu op('motif').par.Contour
Default:
arch
Options:
arch, rise, fall, wander
Celllen (Celllen) Int op('motif').par.Celllen
Default:
4
Range:
2 to 8
Density (Density) Float op('motif').par.Density
Default:
0.7
Range:
0 to 1
Develop (Develop) Menu op('motif').par.Develop
Default:
auto
Options:
none, transpose, invert, retrograde, sequence, thin, auto
Rate (Rate) Menu op('motif').par.Rate
Default:
eighth
Options:
whole, half, quarter, eighth, sixteenth
Rootnote (Rootnote) Float op('motif').par.Rootnote
Default:
67
Range:
0 to 127
Octave (Octave) Int op('motif').par.Octave
Default:
0
Range:
-2 to 3
Chordlock (Chordlock) Float op('motif').par.Chordlock
Default:
0.7
Range:
0 to 1
Variation (Variation) Float op('motif').par.Variation
Default:
0.5
Range:
0 to 1
Gatelen (Gatelen) Float op('motif').par.Gatelen
Default:
0.8
Range:
0.05 to 1
Velocity (Velocity) Float op('motif').par.Velocity
Default:
0.8
Range:
0 to 1
Accent (Accent) Float op('motif').par.Accent
Default:
0.2
Range:
0 to 1
Seed (Seed) Int op('motif').par.Seed
Default:
1
Range:
0 to 100000
Avoidamt (Avoidamt) Float op('motif').par.Avoidamt
Default:
0
Range:
0 to 1