Partial bank has no layer-local note-on randoms, but the README says it has two #55
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
bcox/tymbal#55
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The partial bank's engine source vocabulary is its two LFOs and nothing else:
The FM pair has them --
kSourceRandomA/kSourceRandomB, drawn from the engine's own LCG inNoteOn(dsp/fm_pair_layer.h:469,:2136), labelled "Random A"/"Random B" ineditor/source_labels.h:47. The VA has none either, and doesn't claim any.The README's Partial Bank section says otherwise:
(Found while fact-checking the README. The entry count in that same sentence is wrong too --
kPartialModEntriesis 32, not 64 -- and that half is a plain doc fix.)Which way to resolve
The code's stated reason is narrow and correct as far as it goes: one draw routed across the 32 frequency lanes is a detune, not a scatter, and the scatter you actually want at note-on is already
PhaseMode::kRandomoverstart_phase. But that argues only against randoms as a frequency source. A single per-note draw is still the ordinary way to reach:via, to make any other routing note-dependentThe two voice-level randoms (
kSharedRandomA/B) are reachable from this engine and cover some of that today, but they are shared across every layer in the patch: two partial-bank layers stacked in one voice get the same pair, so they cannot be decorrelated from each other.So the options are:
Samplemembers, two draws off an engine-local LCG inNoteOn, two arms inSourceValue, two rows ineditor/source_labels.h. The comment above already calls this an append, and it is: a source is a U16 on disk (plugin/patch_format.h:1169) and the new ids land pastkSourceLfo2, so every existing patch keeps meaning what it meant. Worth noting the one-way part -- a patch using the new sources, read by a build predating them, falls throughSourceValue's switch to zero rather than being refused.// No randoms.comment to say the decision covers the whole source vocabulary rather than just the frequency lanes.I lean toward (1): the README is the design intent, the cost is a handful of members, and the decorrelation argument reaches beyond the frequency lanes the existing comment answers. But it is a design call, not a bug.
Related: #33 (shared S&H seed across LFOs), #36 (general-purpose lanes as sources, which would subsume some of this).