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'ssample "bd:3"names the same file: both hosts install the keybd:3frombd's file 3 (volta_ui::intel::sample_requestshands 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|> variantPwith 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/sliceregions (Slice a recording at its attacks) — both ride the sameTrackEvent. - An explicit
bd:3token still wins over a|> variantPlane; the lane only fills in where a token carried no suffix. The dynamic sigils resolve before the lane is consulted, sobd:?also wins overvariantP. File 0 is the exception: an event's variant0reads as "no suffix", so under avariantPlane abd:0token takes the lane's value.