Incremental Program Change

As far as i am aware, there is no real “increment” or “decrement” command in the MIDI architecture.
These commands actually imply a relative movement from any given value - means in regards of a program change: No matter which program number (i.e. patch on an external synth or a plugin as well) might be active, it would add or subtract from there…
But there is no way to “read” via MIDI, which program number is active.
MIDI rather works as a one way street, with just one cable from a MIDI-OUT to a MIDI-IN, there is no feedback coming over this cable if the send messages had an effect or not, or wether a sent value change had taken place or not… you just can send a message out in the good belief that it will do what you want.

I know that most synths have a pair of buttons which do exactly that, but to make use of these buttons (respecting their functionality) via MIDI or host automation, a synth had to have implemented a separate command for this (i.e. it could react on an incoming value of 127 on CC#100 with a +1 on the actual program number and on a value of 0 it could do a -1), but there are two things to take in account with that idea (even if such thing existed):

  1. This could be diffrent from synth to synth (or plugin)
  2. You still have no way to “read” from the synth which program number is actually active - so you could send a inc/dec to the synth, but you’d never know (midi wise) where you actually are.

Talking of this scriptlet:

The GP scriptlet will always start counting from a fix program number which is sent at the beginning - if you haven’t changed anything, it’s 1.
So because this PC (#1) is sent at the start, the script “knows” from where to count, and that’s all it does (with some extra functions).

You can simply test this if you open the plugin and manually change to patch #5
Now go back to the panel… if it was a “real” increment/decrement, pressing the +1 button should change to the patch #6, but it won’t because of what i wrote above, instead it starts counting on 1 (as default) and then switches to patch #2 because your pressing the +1 button.
I don’t think that there is any way around this (but maybe i am wrong though).
The only improvement you could make, is another additional parameter to adjust the start value from where the counting would start.

1 Like