Skip to content
Voro
  1. Audio
  2. Other

Arrangement Source

Arrangement Source is a score player. You write the tempo map, the meter map, and the sections of a show in text. It plays them as a timeline clock that anything downstream can follow. Sections decide what happens at their end: keep going, loop, wait for a GO, or jump somewhere else.

Write the arrangement in Doc, wire out into whatever needs a timeline clock, and leave Playing on. To use holds, wire a trigger stream (from OSC In or Trigger Watch) into trigger, or pulse Go by hand.

bpm 120
tempo 0 120
tempo 32 120 ramp
tempo 64 90
meter 0 4 4
meter 32 7 8
section 1 0 32 continue
section 2 32 32 hold
section 3 64 16 loop
  • Input 0: trigger accepts trigger events. A play or continue event acts as GO. A seek event moves the clock to its beat. Optional.
  • Output 0: out emits the timeline clock, including the current section and loop region.
  • Playing: runs or pauses the clock.
  • Go: pulse to release a held section.
  • Jump: pulse to jump to Jumptarget.
  • Jumptarget: beat to jump to.
  • Jumpquantum: when the jump lands. immediate jumps now. beat, bar, and section wait for the next beat, bar, or section end.
  • Stepsperbar: steps per bar on the output clock.
  • Grooveswing, Groovepush, Groovepull, Quantizestrength: groove settings carried on the output clock. Swing and strength run 0 to 1.
  • Doc: the arrangement text. # starts a comment. Changes apply live.
  • Doc lines: bpm <f> (tempo when no tempo events, default 120), tempo <beat> <bpm> [ramp], meter <beat> <num> <den>, section <id> <start_beat> <length_beats> [continue|loop|hold|jump <target_beat>]. Positions are quarter-note beats.
  • ramp glides linearly from that tempo to the next tempo event. Without it the tempo steps.
  • Before the first tempo event, the clock uses that first event’s tempo.
  • Position comes from the tempo map directly, so the same document gives the same position at any block size.
  • A section’s behavior fires when the clock crosses its end. hold stops the clock at the boundary until GO, then continues into the next section. loop returns to the section start. jump seeks to the target beat.
  • Limits: 64 tempo events, 32 meter events, 64 sections.
  • Pair with Automation Clip for keyframed motion and Timeline Derive for polytempo layers.

Inputs

  • trigger row
    transport_obs_v1

Outputs

  • out row
    timeline_state_f32_v1
Playing (Playing) Toggle op('arrangement_source').par.Playing
Default:
On
Options:
Off, On
Go (Go) Pulse op('arrangement_source').par.Go
Default:
None
Jump (Jump) Pulse op('arrangement_source').par.Jump
Default:
None
Jumptarget (Jumptarget) Float op('arrangement_source').par.Jumptarget
Default:
0
Range:
0 to 1000000
Jumpquantum (Jumpquantum) Menu op('arrangement_source').par.Jumpquantum
Default:
bar
Options:
immediate, beat, bar, section
Stepsperbar (Stepsperbar) Int op('arrangement_source').par.Stepsperbar
Default:
16
Range:
1 to 256
Grooveswing (Grooveswing) Float op('arrangement_source').par.Grooveswing
Default:
0
Range:
0 to 1
Groovepush (Groovepush) Float op('arrangement_source').par.Groovepush
Default:
0
Range:
-10 to 10
Groovepull (Groovepull) Float op('arrangement_source').par.Groovepull
Default:
0
Range:
-10 to 10
Quantizestrength (Quantizestrength) Float op('arrangement_source').par.Quantizestrength
Default:
0
Range:
0 to 1
Doc (Doc) Str op('arrangement_source').par.Doc
Default:
"" (Empty String)