Allow a pedal message then ignore repeated pedal presses for a short time aftwards

I’m having to recreate my rig and a lot of my programs for my bands as my music laptop was stolen, along with a controller. I’m working on using pedals for variation changes. I stand when I perform on keys, so I have to do a little “dance” between sustain and variation increment/decrement pedals (among others).

This brings me to a question. Would scripting be able to pass a variation change once a pedal is pushed, and then ignore repeated pushes for a short time?
My issue is that sometimes the push registers as two pushes and jumps past the immediate variation above or below. This is probably caused by not being used to changing patches on the fly with my feet and maybe double tapping the pedals. The pedals are new Boss pedals (I have 4 for various triggering).

I was thinking a “delay only” would register the changes and and pass them on after the delay timed was reached. That is not what I want.
I want the first trigger to “send”, then ignore repeated presses if sent from the pedal, for a predetermined time (like one or two seconds), and then a new single trigger would again register after the delay.

Hopefully I will get used to the pedal jumping and this will not be such an issue, but I have shows coming up that will not allow me that time before the curtain rises.

With scripting that could be done.
But you need to unmapped the variation change in the global midi options.
What CC message are you using for increment/decrement ?

Here I made a proof of concept

This is a gig script which uses Rig Manager

var TW : MidiInDevice
    CC_Active : Boolean
    Ramp_CC   : Ramp
initialization
 CC_Active = False
end

//Called when a CC message is received at some MidiIn device
//The CC numbers must be within the specified range
On ControlChangeEvent(m : ControlChangeMessage) Matching 12 from TW
 if CC_Active == False then
  CC_Active = True
  NextVariation()
  TriggerOneShotRamp(Ramp_CC, 4000, 10)
  Print("Triggered")
 end 
End

// Called by function generators as time passes
On GeneratorRunning(timeX : integer, timeY : double) from Ramp_CC
 if timeX > 3900 then
    CC_Active = False
    StopOneShotRamp(Ramp_CC)
 end   
End
2 Likes

Another solutions is a scriptlet in the global rackspace, and this is the code
Just include a scriptlet and connect it with you MIDI In device (your controller)
and past the below code into the scriptlet editor.

//Called when a CC message is received at some MidiIn device
//The CC numbers must be within the specified range
var TW : MidiInDevice
    CC_Active : Boolean
    Ramp_CC   : Ramp
initialization
 CC_Active = False
end

On ControlChangeEvent(m : ControlChangeMessage) Matching 12 
 if CC_Active == False then
  CC_Active = True
  Print("Triggered")
  TriggerOneShotRamp(Ramp_CC, 4000, 10)
  OSC_SendStringSpecific("/RackSpace/NextVariation", "", "127.0.0.1", 8001)
  Print("Triggered")
 end 
End

// Called by function generators as time passes
On GeneratorRunning(timeX : integer, timeY : double) from Ramp_CC
 if timeX > 3900 then
    CC_Active = False
    StopOneShotRamp(Ramp_CC)
 end   
End

3 Likes