You can assign a CC value to the TAP switch of the Helix with the Helix “Command Center” and learn it in Gig Performer to “Tap Tempo” in “Global MIDI Assignments”.
Tapping the TAP Switch triggers Helix and GP independently to determine the BPM value.
But if the Helix device should follow BPM changes within Gig Performer, the following Scriptlet might be helpful.
The Scriptlet detects BPM value changes in Gig Performer and sends CC# 64 MIDI messages within the corresponding BPM beat.
For all Helix devices (Rack, Floor, LT, Effects, Stomp) this CC#64 value is assigned to the “Tap Footswitch Emulation”.
So the Helix TAP switch is pressed remotely by Gig Performer.
The best place for this Scriptlet is the Global Rackspace. The Scriptlet detects a BPM value change and send the changes to the Helix device.
The script contains a locking mechanism to delay the TAP operation for fast continuous BPM value changes. This happens when you change the BPM value using the mouse.
Var BPM :Double = 0.0 // store Gig Performer BPM value TapBPM_ExecTime : Double = 0.0 // prevent the BPM tapping during a continios BPM value change TapBPM_LockedUntil : Double = 0.0 // Blocks the function from being called up several times // Called automatically after script is loaded Initialization SetTimersRunning(true) End // Send CC#64 Value 64 (Helix Tap Footswitch Emulation) Function TapBPM() var MidiChannel : Integer = 1 // Your used Helix MIDI In channel 1-16 m : MidiMessage if TapBPM_LockedUntil < TimeSinceStartup() Then m = MakeMidiMessage3(MidiChannel - 1 + 176, 64, 64) Print("Tap BPM value (" + Round(BPM) + ") to Helix device") TapBPM_LockedUntil = TimeSinceStartup() + 2.0 * 60000.0 / BPM // Lock the process for 3 TAP times SendNow(m) // 1st TAP SendLater(m, 60000.0 / BPM) // 2nd TAP SendLater(m, 2.0 * 60000.0 / BPM) // 3rd TAP End End // Called by timer ticking On TimerTick(ms : double) If BPM <> GetBPM() Then BPM = GetBPM() Print("BPM value changed to : " + BPM) TapBPM_ExecTime = ms + 2.0 * 60000.0 / BPM // We need a stable BPM value for 3 TAP times End // Check Execution Time If TapBPM_ExecTime > 0.0 && TapBPM_ExecTime < ms Then TapBPM_ExecTime = 0.0 TapBPM() End End