At this point, more controller is wanted, but it come with several problems:Oh no! Just found that there are 32 parameters for my module, while there are only 27 of them; however, there are 5 groups of ADSRs that takes 25 controllers (Mix, A, D, S, R). I can only able to fit 2 more parameters for sound design, but this is definitely not enough.
- The maximum number of CC is 9f ( > 9f used for Midi CC ), which is not infinite
- Even if the controller limit changes, the controller menu will be so long that searching parameter will be painful
- Inserting a new parameter from controller menu will be terrifying since you have to rename from the top to the bottom (edit from 2022, that is no longer the case, as the insert and move controller function is now a thing.)
I hoped that there is a module to support large number of control and limited number of input, so...
Introducing the concept of the Multiplexer, a module to give user more control options with small amount of input.
In fact, the concept already existed in the default SunVox Module, the SpectraVoice:
When you set to harmonic to 0, you have a group of control for frequency, volume, width, and type; and set to harmonic 1, you have another group of control, and so on. As a result, the SpectraVoice provides (16 x 4) + 9 number of option for design your sound, without duplicated, repeated parameter on the screen.
There was an attempt to make a multiplexer; however the design suffers number of problems (that's why I never made a post about it):
- Bad scalablity, due to the module complexity is bad, it takes O(2nm + 1) number of modules to implement
- Required a pattern played quickly to update the change, result in rigid change of controllers and unnecessary use of CPU, or
- Have to trigger midi update to change the value, meaning changing to other groups will be overwrited with the current setting of previous group if received a midi note
Prototype:
That's why a module is wanted to suggested- The Multiplexer
Perhaps something looked like this:
As an empty module, there are only 2 type of options, the group for control which set of controllers to be controlled, while the controller for individual control. Option button for additional configuration and a controller button for assign controllers like the meta module.
To config controllers, click the controllers button an access the user define controllers windows.
The user define controllers windows has 4 fields: Group, Controllers, Linked Modules, Modules Parameters; and 2 options: Number of groups and controls. Similar to the metamodules, user can set the number of controllers to 31 as maximum, but the difference is that it can be set to 8-16 groups as well.
To name the group, simply click the group name to rename:
And click the specific controller to rename the controller:
To assign a control to a controller of a group, select the corresponding group and controller, then assign the module parameter like the method be done the config MetaModule controllers:
After configured the module, the module will shows the group name and the related control:
If setting to a certain group and change the value, only the controller corresponding to the group will be changed, other groups will not be affected.
If anyone have any questions, please comment down below.