Program Change to NextSongPart / Sysex to PreviousSongPart

Nice playing, thanks. :+1:

GP should be able to solve your issue! :wink: 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.

5 Likes