Fixing a MIDI controller issue in a specific Rig using a Gig Script and Include “$rig”

The rehearsal studio where my band and I rehearse recently loaned me a Roland RD700 stage piano which I used with my Roland RPU-3 triple pedal. The special thing about the RPU-3 is that the three pedals send continuous information like an expression pedal. The particularity of the RD700 is that when a continuous pedal is connected to it, it produces continuous CC messages apparently without the possibility of different configuration.

I happily use the CCC64 sustain pedal continuously for half-pedaling piano, but I use the other two CC66 and CC67 pedals as a switch. Unfortunately, by activating one of these pedals, the RD700 sends a series of CC66 or CC67 messages interpreted in GP as several successive presses. I use these pedals to change song parts… you see the problem… :grimacing:

So the idea was to have an extra Rig Manager setting for this stage piano.

I created a Rig Manager rig called RehearsalRig added Include “$rig$” in my Gig Script and created a RehearsalRig.gpscript at the proper location.

The following Gig Script I used, fixes this issue for the Rehearsal Rig where YourMidiInDeviceAlias is the Rig Manager Alias Name defined for the stage piano.

Var
  YourMidiInDeviceAlias : MidiInDeviceAlias;
  CC66_value : Integer = 0;
  CC67_value : Integer = 0;
  new_CC66_value : Integer = 0;
  new_CC67_value : Integer = 0;
  
On ControlChangeEvent(m : ControlChangeMessage) Matching 66 From YourMidiInDeviceAlias
  new_CC66_value = If m.GetCCValue() >=64 Then 127 Else 0 End;
  If new_CC66_value != CC66_value
  Then
    CC66_value = new_CC66_value;
    InjectMidiEventViaRigManager(YourMidiInDeviceAlias, m.WithCCValue(CC66_value));
  End
End

On ControlChangeEvent(m : ControlChangeMessage) Matching 67 From YourMidiInDeviceAlias
  new_CC67_value = If m.GetCCValue() >=64 Then 127 Else 0 End;
  If new_CC67_value != CC67_value
  Then
    CC67_value = new_CC67_value;
    InjectMidiEventViaRigManager(YourMidiInDeviceAlias, m.WithCCValue(CC67_value));
  End
End

The RehearsalRig Gig Script only applies to this specific Rig Manager RehearsalRig and fixes my specific issue thanks to Gig Performer ! :grinning: :+1:

4 Likes

Nice!

I’ve just started writing an Implementation Guide, mainly for myself, for creating a basic multi-instance Gig Performer setup that is full featured, from scratch.

It didn’t take long for me to realize that step 1 is MIDI port management, including Rig Manager. It’s foundational. To new users, it seems like an advanced feature that you can learn later. I now know that it’s the starting point.

The scenario that David-san describes above is a great example of why Rig Manager matters.

I understand that new users want to play immediately and doesn’t need Rig Manager for this. But, that’s a really great configuration tool that should be used as soon as possible in my opinion. And not because of scripting like in my previous example, but because it allows you to replace quickly a controller in your Rig when necessary.

1 Like