If you think a bit about it you’ll realize that’s not possible. The semantics are incompatible. Control.names
is a write-only interface that “declares” any number of names that may or may not actually receive a control at an arbitrary point in time later.
And if look again at my expose on Control.names
, it’s also possible to delete a name by emitting a (seemingly) unrelated one with that interface. These are not exactly sane semantics worth emulating on some other API level.
One thing that could be done to improve compatibility is to fix Control.kr and friends to not issue names that have the wrong slotting of default values in ControlName objects. Meaning like:
ControlName P 0 xx control
ControlName P 1 yy control [ 23, 45, 67 ]
Note the complete lack of value to xx. What that actually does via the value hardcoded in the Control itself is to really write 23 to xx and the rest to yy. But the way that fixup is done at SynthDesc and on the Server involves reading the fully serialized graph and get values from the Control objects. If you do that naively during synth generation is becomes an O(n^2) algorithm. Maybe it doesn’t matter because that ‘n’ would only be the size of the controls list.