I use StreamByter (SB) in MidiDesigner Pro2 (MD2) to read and update VoiceLive 3 Extreme (VL3x).
I send a SysEx message to VL3x to request an update of items. "Guitar Gain". (SND F0 .... F7). VL3x then sends a SysEx message to MD2 which updates "Guitar Gain" in MD2. This works well.
But I now have trouble updating MD2 when changing presets on VL3x:
In the MD2 log, I see that I get this message:"Message In: Length = 2: C1 52" + several other settings. If I press the next preset on VL3x, I read in the log "Message In: Length = 2: C1 53" + several other settings etc.
I mean I have to use "Input Rules" in SB and then I wrote this code:
IF M0 == C1 #Received a new preset from VL3x SND F0 .... F7 #Send a request for new parameter for ex. "Guitar Gain" END
But with this code in "Input Rules" I see in the log that I receive the same SysEx value I sent out. So no SysEx update from VL3x i requested for.
Given that you are seeing a sysex message suggests that your StreamByter code is OK. The code looks reasonable to me in that you are looking for any program change message and then sending your canned sysex message.
From what I can gather in your post, the VL3x is echoing back the sysex message you are sending.
Either the VL3x's MIDI is setup so MIDI out is a MIDI thru or it is ignoring the sysex message, probably because it doesn't understand it?