Open christofmuc opened 1 year ago
The C++ synths can already provide parameter value extraction, it is a mere matter of exposing this interface to the Python adaptation. E.g. the Rev2 and the DW-8000 C++ implementations already offer these featurs.
A good first start now would be the MKS-70, as we have already implemented all parameters because it needs them to convert between different buffer types.
This should come with #254, because then the adaptations will be able to do everything the C++ code can do!
Much of the work is done. The image below is from my database. On the left-hand side you can see the raw Ensoniq program data as it is encoded in bytes (Program Data) and the actual nybbles within this that contain parameter information (ShortData). Bits-to-integer extraction produces the >100 integer parameters on the right-hand side. Could you feasibly accommodate this many parameters in the user interface?
The remaining work for me would be compiling lookup lists to further translate all the WAVE and MOD integer parameters to their recognised names (SAW, PIANO1, NOISE3, etc, and WHEEL, LFO1, OSC2, etc). Some parameters should also probably be flagged as needing to be translated from 0 and 1 to 'off' and 'on'. Finally, there are some oddities such as 'if parameter 2R = 1, then parameter T4 = T4 + "R". I don't mind doing this, but such lists, flags and arbitrary rules would have to be handled in your code. Or, I guess, we just settle for integer parameters instead.
Maybe this is something to think about after you have bank management working nicely?
Originally posted by @Mostelin in https://github.com/christofmuc/KnobKraft-orm/issues/170#issuecomment-1222728788