Scaled knob with direct value input
Enter scaled values directly by double-clicking the value field.
Looks and feels like a regular humble knob, but the value is output, displayed and edited in exponential domain. Mapping range and curvature adjustable via input parameters. Adaptable to other non-linear curves.
There are two knob macros, one unstyled and one graphical, showing the actual response curve.
Greatly simplified input structure, everything but `Scl` is now a constant inside.
* Improved: knob position responds immediately to `Scl` changes
* Fixed: reinit (like restarting audio engine) no longer resets knob
* Fixed: disconnecting `Scl` input could break value mapping until a forced reinit
Thanks to Colin Brown and EvilDragon for constructive arguments :)
* Added: a macro variant that displays the response curve. The curve responds to parameter changes immediately (max/bias/scale).
* Changed: `scl` input is now exponential
* Fixed: parameters were not correctly generating events in default cases
Thanks to Jonathan Tremblay and Colin Brown for help with debugging events and learning to draw.
Exponential knobs are useful for controlling frequency, etc..
Scaling a value from a linear knob in one direction is easy. The key here is that the mapped/scaled value can be entered directly in the knob's value field (AFAIK the only way to type in an exact value in Reaktor GUI), and both the knob and the exponential value display/entry field are fully synchronised.
Internally this is done with two cleverly cross-modulated knobs (one displaying the knob and another the value field) and a bi-directional morphism to map between linear and non-linear domains.
Note: bi-directional control works only when audio engine is running.
- Go into "scaler" and change the mapping transformation. One leg of the transformation must be the inverse of the other.
- Displayed range is 0 to 999, this has effect on the number of decimal places shown (in this case, 2). When changing, pay attention to the final scaling before "knob send", it has to match the range.