VOLTAlearn

Learn Volta / Structure

The arrangement

Sequence scenes into a complete song journey.

lesson 23 of 39 · about 11 minutes

Open this lesson in the workbench →

Scenes are places; an arrangement is the journey. Write the order in bars, the transitions between scenes, and the slow-motion moves across them — then press play on the whole song.

FIRST, the long-hand song. The short spelling (song { intro = [...], drop = [...] }) has room for scenes and nothing else, so a song with a journey labels its parts: song { scenes = { … }, edges = { … }, arrange = … }. Same scenes as before, now with somewhere to put the next three ideas.

THEN the running order. arrange = arrange [[8, intro], [16, drop], [8, intro]] is a list of "this many bars of that scene", and a bar is one cycle of your patterns. A scene can come back at a different length — that's a reprise, not a repeat. The arrangement loops when it ends; pipe it through |> once for a piece that finishes.

THEN the seams. A transition is what happens BETWEEN two scenes, and edges know where you came from: edges = { * -> drop : [1, [riser]] } overlays the riser track for the bar before ANY arrival at the drop. * is the wildcard and a specific edge beats it, so groove -> drop can lift differently from breakdown -> drop. Edges fire on the arrangement's own advances and on live scene jumps alike.

LAST, motion across a section. A scene can carry automation for its whole duration: drop = [...] with { air = ramp 0.2 1.0 } sweeps the macro named air from 0.2 to 1.0 over however many bars that drop is scheduled for — the 16-bar filter opening as one clause, not sixteen edits. A bare with { air = 0.2 } just pins the knob for that section.

The starting point#

The lesson opens with this song in the editor. Every edit recompiles and plays.

-- The arrangement: scenes exist but the song just alternates them forever.
air = macro 0.3

bass = patch {
  source = saw (freq pitch),
  ampEnv = adsr 2ms 150ms 0 90ms,
  cutoff = 700Hz + air * 2500Hz,
  gain   = vel * 0.5
}

riserP = patch {
  source = saw (freq pitch) |> unison 5 30,
  ampEnv = adsr 900ms 0ms 1 200ms,
  cutoff = 3000Hz,
  gain   = vel * 0.25
}

kick     = sound !"bd ~ bd ~"
bassline = play bass !"c2 ~ [c2 eb2] g1"
riser    = play riserP !"c4"

set = song {
  intro = [bassline],
  drop  = [kick, bassline]
}

What to watch#

Let the arrangement run: the picture rebuilds itself section by section — sparse in the intro, full at the drop — without you touching anything.

Goals#

The workbench checks these as you work; the solution is there when you want it.

  1. Write the journey — an arrange of 3+ steps
  2. A transition edge into the drop
  3. Stretch: ramp a macro across a scene

Make it yours#

Arrange a real EDM arc: 8 intro, 8 groove, 16 drop, 8 breakdown, 16 drop, 8 outro — with a riser edge into every drop and a ramp opening the breakdown.

Further reading#

Arrange a song in the reference.