Optional session seed, chosen at the boundary, for across-session variation #7
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
bcox/tymbal#7
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?
Every load of a patch currently produces identical randoms, because the voice
seeds are a pure function of the voice index. A chord sounds the same today as
it will next week.
That is deliberate and load-bearing, not an oversight.
.bazelrcforbids FMAcontraction and fast-math reassociation specifically so a float reference stays
a usable oracle for the fixed-point implementation, and tests assert on
concrete rendered values. A nondeterministic source would make that strategy
impossible — you could assert statistics, not behaviour.
If across-session variation is ever wanted
The architecturally right shape is a single seed chosen at instrument
construction, on the host side, outside
dsp/, and injectable so tests canpin it to a constant. Voices would derive from it exactly as they derive from
the index today.
Entropy at the boundary, determinism everywhere inside. That keeps
dsp/translatable — no clock reads, no OS calls on the synthesis path — and leaves
every existing test meaningful, because the test harness supplies a fixed seed.
Explicitly not this
Hardware entropy on the synthesis path — ring-oscillator TRNGs on the FPGA,
rdtscon the CPU — is a separate issue and was rejected.Nobody has asked for this. Filed so the shape is recorded rather than
re-derived.