Modulation Controller Amount set to negative values has wrong behavior

Polyphonic Analog Synthesizer
Post Reply
devnull
Posts: 24
Joined: Sat Dec 19, 2020 1:00 pm

Modulation Controller Amount set to negative values has wrong behavior

Post by devnull » Tue Dec 29, 2020 2:03 pm

This will take a little bit to explain, but to try to give a brief summary:

When there is both a source and a controller on a Modulation line, the behavior of the controller is not as expected when the controller amount is negative.

For a source with no controller, the manual says:

Positive values will produce normal modulation; negative values will produce modulation with an inverted signal.

This works as expected. For example:
Load INIT preset. Disabled the first mod matrix line.
Add modulation: Mod Wheel 10% / - / - / All OSC Pitch Offset
Play C4. Mod Wheel from all down (OFF) to all up (ON) plays C4 up to C5.
Change modulation to: Mod Wheel -10% / - / - / All OSC Pitch Offset
Play C4. Mod Wheel from all down (OFF) to all up (ON) plays C4 down to C3.

For a source with a controller, the manual says:
If the Controller Amount is positive, then high Controller values create stronger modulation effects while low Controller values reduce the amount of modulation. If the Controller Amount is negative, then the effect of the Controller is reversed (a low Controller value allows more modulation to come through, while increasing the Controller value attenuates the strength of modulation).

Positive values of Controller Amount work as expected. For example.
Load INIT preset. Disabled the first mod matrix line.
Add modulation: Constant 10% / Mod Wheel 100% / - / All OSC Pitch Offset
Play C4. Mod Wheel from all down (OFF) to all up (ON) plays C4 up to C5.
Change modulation to: Constant -10% / Mod Wheel 100% / - / All OSC Pitch Offset
Play C4. Mod Wheel from all down (OFF) to all up (ON) plays C4 down to C3.

From the manual statement above, one would expect that setting the Mod Wheel Control Amount to -100% would just make Mod Wheel all up be OFF and Mod Wheel all down be ON, but what happens versus what should happen is:

Load INIT preset. Disabled the first mod matrix line.
Add modulation: Constant 10% / Mod Wheel -100% / - / All OSC Pitch Offset
Play C4. Mod Wheel from all up (OFF) to all down (ON) plays C3 up to C4.
..........................................................................................................Should play C4 up to C5.
Change modulation to: Constant -10% / Mod Wheel -100% / - / All OSC Pitch Offset
Play C4. Mod Wheel from all up (OFF) to all down (ON) plays C5 down to C4.
..........................................................................................................Should play C4 down to C3.

Defining the following variables:
D = The value assigned to the destination including any modulation.
DV = The value current statically assigned to the destination before any modulation.
SV = The value of the source (-100% ≤ SV ≤ +100%)
SA = The source amount which is a scaling factor applied to source (-300% ≤ SA ≤ +300%)
CV = The value of the controller (-100% ≤ < CV ≤ -+100% )
CA = The controller amount which is a scaling factor applied to source (-100% ≤ SA ≤ +100%)

The observed and desired behavior for positive values of CA is:
D = DV + SV * SA * [1 - CA * (1 – CV) ] for CA ≥ 0%

The desired behavior for negative values of CA is:
D = DV + SV * SA * [ 1 + CA * CV ] for CA < 0%

The observed behavior for negative values of CA is:
D = DV + SV * SA * [ CA * CV ] for CA < 0%

A workaround might be:

Constant 10% / Mod Wheel -100% / - / All OSC Pitch Offset
Replaced by:
Constant 10% / Mod Wheel -100% / - / VAR1
VAR1 / Constant 10% / Function S+C / All OSC Pitch Offset

And

Constant -10% / Mod Wheel -100% / - / All OSC Pitch Offset
Replaced by:
Constant -10% / Mod Wheel -100% / - / VAR1
VAR1 / Constant -10% / Function S+C / All OSC Pitch Offset

Post Reply