2021-06-08
Bug in ScaleQuantizer revisited …
Note: there is a follow-up on this one.
It turned out that the runtime module behavour was a bit problematic too … I’ve made a fix for that as well now … almost at least.
Also see the previous bug report.
And … made a fix … well, more of a redo of the code it was.
There is still one shortcoming though. When a custom scale was made with the note buttons you can not get out of that by selecting another preset. The current way out of that deadlock is to select a known scale with the buttons and that will unlock things. The easiest probably is to just select C and C# (the two leftmost note buttons).
Otherwise it seems to all work pretty well now, a custom scale will be indicated as being custom as the ‘active scale’, and when a custom scale turns out to be a known one it’s name will be shown there as well.
Scale modulation will override any custom scale set (note that with scale modulation each voice in a poly patch can have it’s own scale). Custom scales will not be lost on patch restructuring, and it will move with the module when the module gets copied as well. Parameter paste works as intended too.
What also works now is the transparent mode, when no notes are selected the module will pass the input unmodified to the output.
So, what is left is the lock issue, not sure yet how to best solve that. It can not directly be solved by checking if a preset was selected, as that will mess things up when the module runs for the first time after patch load or a structural change (there will always be an intitial preset selection, which gets to be suppressed now when a custom scale happens to be selected).
Maybe an ‘unlock’ button, not sure yet … maybe direct usage of the preset selector can be used.
Anyway, this is in the current pre-release.
I’ll not make something like this again, likely. I mean where the indicators are selectors as well, it is damn hard to make that work well.