Button and time indicator in front panel

Hi,

Is it possible to configure in the front panel a button to start and stop the rack (instead of the small button in the top)? And also to configure a time indicator how long the rack space is playing?

Yes that is possible.
And what do you mean by rackspace playing?
Do you mean the time spent since the global play has been started?

Yes, or it would even be better if you could see in GP the measure count from Ableton.

Ok, so you want to see bar:beat?

Important, enable LINK in Ableton Live and Gig performer.

Try this:

PlayHead.gig (10.3 KB)

And this is the script used in the rackspace:

//$<AutoDeclare>
// DO NOT EDIT THIS SECTION MANUALLY
Var
   START_STOP : Widget
   DURATION   : Widget
   beat       : Widget
   vtimer     : double
   vtimer_run : double
   v_beat     : Integer
   v_counter  : Integer
   v_bar      : Integer
   v_pointer  : String
//$</AutoDeclare>
   
initialization
 SetTimersRunning(false)
  v_counter = 0
  v_beat    = 0
  v_bar     = 1
  v_pointer = "1.1"
  SetWidgetLabel(beat, v_pointer) 
end 

// Called when a widget value has changed
On WidgetValueChanged(newValue : double) from START_STOP
 if newValue > 0.5 then
    
  v_counter = 0
  v_beat    = 0
  v_bar     = 1
  v_pointer = "1.1"
  
  SetWidgetLabel(beat, v_pointer) 
  EnablePlayhead(true)
  SetTimersRunning(true)
  vtimer = TimeSinceStartup()
 else
  EnablePlayhead(false)
  SetTimersRunning(false)
 end 
End


On TimerTick(ns : double)
 vtimer_run = TimeSinceStartup() - vtimer
 Print(vtimer_run/1000.0)
 DURATION.SetWidgetLabel(Round(vtimer_run/1000))
End

On BeatChanged(Bar : Integer, Beat : Integer, Subbeat : Integer)
 v_counter = v_counter+1;
 v_beat := v_beat+1;
 if v_beat == 5
  then v_bar = v_bar+1;
       v_beat = 1;
 end;      
 
 v_pointer = IntToString(v_bar)+"."+IntToString(v_beat)
 SetWidgetLabel(beat, v_pointer)
  
End


on Activate
  v_counter = 0
  v_beat    = 0
  v_bar     = 1
  v_pointer = "1.1"
  SetWidgetLabel(beat, v_pointer) 
end

Thanks this works for me. WHen there is already a script in the rackspace, do you have to define a new script tab or just paste the new script under the old script?

As each rackspace can only have 1 script you have to merge my code into your existing code.

Oh…I think for that you need quite some computer knowledge. This script is in de rackspace (is also one of yours). How to merge them?

var mOSC : OSCMessage
mOSCP : OSCMessage
mOSCT : OSCMessage

// Called on attempt to change playhead status
On SystemEvent(newValue : double) Matching PlayheadStateChanged
if newValue == 1.0 then

 EnablePlayhead(true)
 //Start = MakeControlChangeMessage(112,127)
 //SendNowExternal(ABLETON, Start)
 OSC_SetAddress(mOSC, "/LaunchScene")
 OSC_SendSpecific(mOSC, "127.0.0.1", 8000)
else
 EnablePlayhead(false)
end

End

on Activate

OSC_SetAddress(mOSCP, “/SelectScene”)
OSC_AppendIntArg(mOSCP, 0)
OSC_SendSpecific(mOSCP, “127.0.0.1”, 8000)
OSC_ClearArgs(mOSCP)

OSC_SetAddress(mOSCP, “/SetSongName”)
OSC_AppendStringArg(mOSCP, GetRackspaceName())
OSC_SendSpecific(mOSCP, “127.0.0.1”, 8000)
OSC_ClearArgs(mOSCP)
end

Here the merged code:

//$<AutoDeclare>
// DO NOT EDIT THIS SECTION MANUALLY
Var
   START_STOP : Widget
   DURATION   : Widget
   beat       : Widget
   vtimer     : double
   vtimer_run : double
   v_beat     : Integer
   v_counter  : Integer
   v_bar      : Integer
   v_pointer  : String
   
   mOSC : OSCMessage
   mOSCP : OSCMessage
   mOSCT : OSCMessage   
//$</AutoDeclare>
   
initialization
 SetTimersRunning(false)
  v_counter = 0
  v_beat    = 0
  v_bar     = 1
  v_pointer = "1.1"
  SetWidgetLabel(beat, v_pointer) 
end 

// Called on attempt to change playhead status
On SystemEvent(newValue : double) Matching PlayheadStateChanged
 if newValue == 1.0 then

  v_beat    = 0
  v_bar     = 1
  v_pointer = "1.1"
  
  SetWidgetLabel(beat, v_pointer) 
  SetTimersRunning(true)
  vtimer = TimeSinceStartup()
  
  EnablePlayhead(true)
  //Start = MakeControlChangeMessage(112,127)
  //SendNowExternal(ABLETON, Start)
  OSC_SetAddress(mOSC, "/LaunchScene")
  OSC_SendSpecific(mOSC, "127.0.0.1", 8000)
 else
  EnablePlayhead(false)
 end

End

// Called when a widget value has changed
On WidgetValueChanged(newValue : double) from START_STOP
 if newValue > 0.5 then
    
  v_counter = 0
  v_beat    = 0
  v_bar     = 1
  v_pointer = "1.1"
  
  SetWidgetLabel(beat, v_pointer) 
  EnablePlayhead(true)
  SetTimersRunning(true)
  vtimer = TimeSinceStartup()
 else
  EnablePlayhead(false)
  SetTimersRunning(false)
 end 
End


On TimerTick(ns : double)
 vtimer_run = TimeSinceStartup() - vtimer
 Print(vtimer_run/1000.0)
 DURATION.SetWidgetLabel(Round(vtimer_run/1000))
End

On BeatChanged(Bar : Integer, Beat : Integer, Subbeat : Integer)
 v_counter = v_counter+1;
 v_beat := v_beat+1;
 if v_beat == 5
  then v_bar = v_bar+1;
       v_beat = 1;
 end;      
 
 v_pointer = IntToString(v_bar)+"."+IntToString(v_beat)
 SetWidgetLabel(beat, v_pointer)
  
End


on Activate
  v_counter = 0
  v_beat    = 0
  v_bar     = 1
  v_pointer = "1.1"
  SetWidgetLabel(beat, v_pointer) 
  
  OSC_SetAddress(mOSCP, "/SelectScene")
  OSC_AppendIntArg(mOSCP, 0)
  OSC_SendSpecific(mOSCP, "127.0.0.1", 8000)
  OSC_ClearArgs(mOSCP)

  OSC_SetAddress(mOSCP, "/SetSongName")
  OSC_AppendStringArg(mOSCP, GetRackspaceName())
  OSC_SendSpecific(mOSCP, "127.0.0.1", 8000)
  OSC_ClearArgs(mOSCP) 
end
4 Likes

Thanks