Add a second synthesis engine — the format and switches already expect one #5
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
bcox/tymbal#5
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 codebase is shaped for more than one synthesis engine and currently has
exactly one (
FmPairLayer). Adding a second is the extension the architecturemost explicitly anticipates.
What is already in place:
plugin/patch_format.hopens with it: areader skips any chunk it does not recognise, and layers are themselves
tagged and length-prefixed inside the layer chunk, "so a reader that has
never heard of a layer type can step over it rather than losing the rest of
the patch."
LayerKindare registration sites..bazelrcsets-Werror=switchprecisely so a missed arm fails the build rather thansilently doing nothing: "a missed arm is an engine that silently does nothing
at that site rather than one that fails to build." Adding a kind will produce
a list of every place that needs teaching.
plugin/patch_format.h:295notes the FM pair's record writer is arranged so "the next engine with a
matrix reuses it instead of" duplicating it.
Voice<kCapacity, Layers...>isvariadic over layer types; the single-engine case is just the current
instantiation.
So this is less "build an extension point" than "use the one that exists".
Whoever takes it should expect the compiler to enumerate the work.
We have VA and unvoiced formants now.