GP should be able to solve your issue!
The foot switch, knee lever and bank select messages are all sent via SysEx and using GPScript, GP should be able to convert these messages such that you can use them seamlessly.
Bank select A,B,C,D,E (n=0…4)
F0, 43, 70, 78, 44, 7E, 0n, 00, F7
=> I propose to convert this into regular MIDI bank select messages, such that you will be able to use them to switch rackspaces/variations, song/songparts the regular way in GP.
Left foot switch
F0, 43, 70, 70, 40, 45, 7F, F7 (ON)
F0, 43, 70, 70, 40, 45, 00, F7 (OFF)
=> I propose to transform this as a CC66 piano pedal regular MIDI message
Knee lever
F0, 43, 70, 70, 40, 47, 7F, F7 (ON)
F0, 43, 70, 70, 40, 47, 00, F7 (OFF)
=> I propose to transform this as a CC67 piano pedal regular MIDI message
CC# message make it possible to use regular GP MIDI mapping, such that you could move using previous/next rackspaces/variations, song/songparts.
Would my proposals fit to your needs?
If yes, this is the Gig GPScript which goes with my proposals:
Gig_GPScript_SysEx_to_CC_and_Bank_Select.txt (2.1 KB)
Var Electone : MidiInDeviceAlias;
On SysexEvent(s : SysexMessage) From Electone
Var
sysExString : string = SM_Pretty(s, s.SM_Length(), True);
Select
//Bank select A..E => CC0=0, CC32=n
sysExString == "F0437078447E0000F7" Do InjectMidiEventViaRigManager(Electone, MakeControlChangeMessage(0, 0));
InjectMidiEventViaRigManager(Electone, MakeControlChangeMessage(32, 0));
sysExString == "F0437078447E0100F7" Do InjectMidiEventViaRigManager(Electone, MakeControlChangeMessage(0, 0));
InjectMidiEventViaRigManager(Electone, MakeControlChangeMessage(32, 1));
sysExString == "F0437078447E0200F7" Do InjectMidiEventViaRigManager(Electone, MakeControlChangeMessage(0, 0));
InjectMidiEventViaRigManager(Electone, MakeControlChangeMessage(32, 2));
sysExString == "F0437078447E0300F7" Do InjectMidiEventViaRigManager(Electone, MakeControlChangeMessage(0, 0));
InjectMidiEventViaRigManager(Electone, MakeControlChangeMessage(32, 3));
sysExString == "F0437078447E0400F7" Do InjectMidiEventViaRigManager(Electone, MakeControlChangeMessage(0, 0));
InjectMidiEventViaRigManager(Electone, MakeControlChangeMessage(32, 4));
//Left foot switch ON
sysExString == "F043707040457FF7" Do InjectMidiEventViaRigManager(Electone, MakeControlChangeMessage(66, 127));
//Left foot switch OFF
sysExString == "F0437070404500F7" Do InjectMidiEventViaRigManager(Electone, MakeControlChangeMessage(66, 0));
//Knee lever ON
sysExString == "F043707040477FF7" Do InjectMidiEventViaRigManager(Electone, MakeControlChangeMessage(67, 127));
//Knee lever OFF
sysExString == "F0437070404700F7" Do InjectMidiEventViaRigManager(Electone, MakeControlChangeMessage(67, 0));
End
End
- open Rig Manager and define a MIDI port alias “Electone” for your organ MIDI port
- open the Gig Script Editor
- copy and paste the GPScript I made for you
- compile
- open the Global MIDI Monitor
- change presets, press the foot switch, act on the knee lever
- make a screenshot of the Global MIDI Monitor and post it here
I couldn’t test the GPScript, so I am not 100% sure it will do the job.