You might already have some of this functionality. I’m still a total newbie to Cantabile in general (didn’t use v2) but I’ve taken some techniques I’ve used in other live hosts to accommodate my workflow.
My main use for PizMidi is to modulate program change messages. If you look at the FBV control software, you choose what messages to send per switch and its rather inconvenient to load a different floor controller preset per song so I like to leave the settings on the floor controller alone and modulate the incoming messages to suit the song.
For instance, my amp sim plugin changes presets via PC assignments. The PC assignments are global in the plugin, so every instance for that user account will have the same PC assignments.
I use switch A-B-C-D to control 4 “main” song presets. Generally lead sound, rhythm, clean/chorus, specialty preset. So I use PizMidi midiProgramChange plugin to modulate the PC messages.
These screenshots should illustrate this better. There are 4 midiProgramChange plugins loaded and titled A-Route, B-Route, C-Route, D-Route (I think the screenshots show only 3 because i didn’t need a 4th for the song I had open)
So switch A always sends PC 4 to A-Route, which in this example, modulates the PC message to 10 instead of 4 allowing my amp sim to select preset 10.
Again this may already be in the product, I’m still new.
Are you trying to map program changes to different values to send to another device? (In your example, you are sending a program change 4 and want your amp simulator to receive a 10, correct?)
One easy trick is to simply have a trigger from changing song states that sends a program change (or several).
You can have several states in a row that are identical except for what the state change trigger sends. Cantabile is smart enough not to turn off the stuff that is common to both states as it changes states. It would only send the program change(s).