Skip to content
Voro
  1. Audio
  2. Compose

Companion

Companion listens to what you play and answers back in a similar style. It learns your phrasing live from the note voices you feed it and replies by continuing, echoing, or trading phrases. A familiarity control sets how close the answer stays to your input versus how freely it recombines, and the answers lock to scale, chord, and the timeline.

Wire your live playing into Input 0 and a timeline clock into Input 1, then optionally add a scale and chord so the answers stay in key. Set Mode to listen, answer, or both, dial Familiarity, and route the voices output to a second instrument so the machine voice has its own sound. The reply can also drive visuals.

  • Input 0: voices your live note voices, used as the learning seed. Required.
  • Input 1: timeline timeline clock. Required.
  • Input 2: scale scale context for snapping answers. Optional.
  • Input 3: chord_state chord context for snapping answers. Optional.
  • Output 0: voices emits the machine reply as note voices.
  • Mode: listen learns only, answer replies only, both does both.
  • Tradebars: phrase length for trading back and forth.
  • Familiarity: faithful echo at high values, wilder recombination at low values.
  • Rate: rhythmic grid for the reply.
  • Snap: off, scale, or chord for how answers are pulled into key.
  • Density and Gatelen: how busy the reply is and note length.
  • Octave, Velocity, Accent: register and dynamics of the reply.
  • Respectrhythm: keep the answer aligned to the input rhythm.
  • Seed: repeatable random choices.
  • Companion learns live and keeps no model files, so a reset clears what it has learned.
  • Give the reply its own instrument so your part and the machine part stay distinct.
  • Lower Familiarity for more surprising answers, higher for tight call-and-response.

Inputs

  • voices row required
    note_voices_f32_v1
  • timeline row
    timeline_state_f32_v1
  • scale row
    scale_v1
  • chord_state row
    chord_state_v1

Outputs

  • voices row
    note_voices_f32_v1
Mode (Mode) Menu op('companion').par.Mode
Default:
both
Options:
listen, answer, both
Tradebars (Tradebars) Int op('companion').par.Tradebars
Default:
2
Range:
1 to 16
Familiarity (Familiarity) Float op('companion').par.Familiarity
Default:
0.7
Range:
0 to 1
Rate (Rate) Menu op('companion').par.Rate
Default:
eighth
Options:
whole, half, quarter, eighth, sixteenth
Snap (Snap) Menu op('companion').par.Snap
Default:
scale
Options:
off, scale, chord
Density (Density) Float op('companion').par.Density
Default:
0.85
Range:
0 to 1
Gatelen (Gatelen) Float op('companion').par.Gatelen
Default:
0.7
Range:
0.05 to 1
Octave (Octave) Int op('companion').par.Octave
Default:
0
Range:
-3 to 3
Velocity (Velocity) Float op('companion').par.Velocity
Default:
0.8
Range:
0 to 1
Accent (Accent) Float op('companion').par.Accent
Default:
0.2
Range:
0 to 1
Respectrhythm (Respectrhythm) Toggle op('companion').par.Respectrhythm
Default:
On
Options:
Off, On
Seed (Seed) Int op('companion').par.Seed
Default:
1
Range:
0 to 100000
Avoidamt (Avoidamt) Float op('companion').par.Avoidamt
Default:
0
Range:
0 to 1