VOLTAreference

Reference / Samples and recording

Choose sample variants

Samples and recording

Open in the workbench →
On this page · 3 sections

Select alternate recordings from a sample bank to add contrast, variation and changing articulation.

What it is#

A multi-file sample bank is one name with many recordings — bd resolves to twenty-four kick variations in dirt-samples. Variant addressing lets a pattern token say which of them to play, so a repeated hit stops sounding like the same file stamped four times.

Surface#

A :-suffix on a sample atom in mini-notation:

roll = sound !"bd:0 bd:3 sn bd:7"    -- :N picks the Nth file in the bank
hats = sound !"hh:? hh:? hh:? hh:?"  -- a deterministic random pick per event
kick = sound !"bd:*"                 -- cycle 0 file 0, cycle 1 file 1, …
  • bd:3 — literal index into the bank's file list. A synth graph's sample "bd:3" names the same file: both hosts install the key bd:3 from bd's file 3 (volta_ui::intel::sample_requests hands the browser {bank: "bd", variant: 3}, resolved exactly like the event's).
  • bd:? — a uniform random pick per event, drawn from the coordinate-addressed RNG (module seed × track × cycle × event) — live playback, replay and offline export all pick the same file (Change music while it plays §3).
  • bd:* — round-robin: the track's cycle index modulo the bank's file count. Two :* tokens in the same cycle deliberately pick the same file (a groove built on one rotating kick); for per-event rotation use |> variantP with a counting subpattern (Control patterns for individual events §5).

Keep a literal :N below the bank's file count. Past it the hosts disagree: the desktop engine installs one key per file and plays silence for bd:99, while the browser plays files[N % count]. With a sample manifest the compiler reports it as UnknownVariant, naming the wrapped index to write (volta doctor --samples=…, volta --samples=…, the desktop workbench's problems panel — Doctor: trace a silent signal), and the doctor_corpus gate holds the song corpus to it. bd:? and bd:* resolve against the loaded file count and are always in range. The suffix only peels off sample atoms — a tagged chord (c4:maj7::a) is unaffected, and the repeat operator survives untouched: bd*2 repeats, bd:* rotates, bd:3*2 is variant 3 twice.

Notes & limits#

Dynamic random and round-robin selection uses at most the first 32 variants in a bank.

  • :?{0,3,5} restricted-set picks are deferred and largely subsumed by pattern alternation (Choose sample variants §5 → Ideas).
  • Variant selection is orthogonal to chop / slice regions (Slice a recording at its attacks) — both ride the same TrackEvent.
  • An explicit bd:3 token still wins over a |> variantP lane; the lane only fills in where a token carried no suffix. The dynamic sigils resolve before the lane is consulted, so bd:? also wins over variantP. File 0 is the exception: an event's variant 0 reads as "no suffix", so under a variantP lane a bd:0 token takes the lane's value.