Skip to content
Voro
  1. Audio
  2. Compose

Feel

Feel transfers groove from one performance to another. It listens to a reference note lane, learns the timing offset and velocity of each grid slot, and then applies that feel to a second note lane live: notes are delayed toward the learned offsets and accented toward the learned velocities. It works causally with at most one grid unit of latency, and handles notes only in this version.

Wire the performance whose feel you want into reference, the part to be treated into notes, and a timeline clock into timeline so the grid follows the tempo. Leave Learn on while the reference plays, then balance Timingamount and Velocityamount for how much of the feel is applied. Route the notes output to the instrument.

  • Input 0: reference is the note performance to learn feel from. Required.
  • Input 1: notes is the note lane the feel is applied to. Required.
  • Input 2: timeline is an optional timeline clock that sets the grid.
  • Output 0: notes emits the treated note lane.
  • Output 1: groove emits the learned groove data.
  • Grid: slot resolution, 1/4 to 1/64.
  • Patternbars: how many bars the learned pattern spans, 1 to 8.
  • Freeslots: number of slots used when running without a timeline.
  • Learn: keep updating the learned feel from the reference. Off freezes the current feel.
  • Timingamount and Velocityamount: how much of the learned timing and velocity is applied.
  • Smoothing: how quickly the learned values track the reference; higher is steadier.
  • Freegridseconds: slot length in seconds when no timeline is wired.
  • Reset: pulse to clear the learned feel.
  • The transfer is causal: applied notes can only be delayed toward the groove, never pulled earlier, which is why the latency is bounded by one grid unit.
  • Turn Learn off once the feel is right to lock it while the reference part changes.
  • Feed a drummer part as reference and a rigid sequenced part as notes to make the machine part sit inside the human pocket.

Inputs

  • reference row required
    note_voices_f32_v1
  • notes row required
    note_voices_f32_v1
  • timeline row
    timeline_state_f32_v1

Outputs

  • notes row
    note_voices_f32_v1
  • groove row
    control_f32_v1
Grid (Grid) Menu op('feel').par.Grid
Default:
1/16
Options:
1/4, 1/8, 1/16, 1/32, 1/64
Patternbars (Patternbars) Int op('feel').par.Patternbars
Default:
1
Range:
1 to 8
Freeslots (Freeslots) Int op('feel').par.Freeslots
Default:
16
Range:
1 to 128
Learn (Learn) Toggle op('feel').par.Learn
Default:
On
Options:
Off, On
Timingamount (Timingamount) Float op('feel').par.Timingamount
Default:
1
Range:
0 to 1
Velocityamount (Velocityamount) Float op('feel').par.Velocityamount
Default:
1
Range:
0 to 1
Smoothing (Smoothing) Float op('feel').par.Smoothing
Default:
0.5
Range:
0 to 0.99
Freegridseconds (Freegridseconds) Float op('feel').par.Freegridseconds
Default:
0.125
Range:
0.005 to 4
Reset (Reset) Pulse op('feel').par.Reset
Default:
None