Sync Arp with linked downbeat

Hi GP peeps!

I am looking for a way to beat sync arpeggiator to the next beat/downbeat similar to what I can do in Ableton. My church uses Ableton for click and tracks. I would like to have GP linked and be able to use temp synced arps etc and be locked in with the click so if if play a hair early or late it will play the next arp not on the next beat instead of right when I press the key.

I’ve been messing around with it using Live running on my same MacBook as GP. The temp links ok and when I change the tempo in Live it changes in GP. But I can’t seem to get the arp to sync to the next beat.

Is this possible??

Thanks!

How is the arp triggered?
By a note event from your keyboard?

Take a look at that, maybe this idea can help
Just map your note to the 1st widget to set it on
And with the 2nd widget trigger your arp

Triggered by playing chords on the keyboard.

Try this rackspace script.
The Idea is that played notes are remembered in a Note Tracker and sent from the MIDI IN block when a Widget is pressed.

//$<AutoDeclare>
// DO NOT EDIT THIS SECTION MANUALLY
Var
   MIN : MidiInBlock
   nt  : NoteTracker
   ARP : Widget
   i   : Integer
//$</AutoDeclare>


On NoteEvent(m : NoteMessage) from MIN
  NoteTracker_GotNote(nt, m)
  if IsNoteOff(m) then
   SendNow(MIN,m)
  end 
End

// Called when beat changes
// Only beat number is valid for now
On BeatChanged(bar : integer, beat : integer)
 if ARP.GetWidgetValue() == 1.0 then
  For i = 0; i < 128; i = i+1 Do
   if NoteTracker_GetSpecificNoteOnCount(nt, i) > 0 then 
    SendNow(MIN, MakeNoteMessage(i,100))
   end   
  end
 end   
End

You can remove the check against the widget value, then the note are always sent out with the next beat.

Without the test it looks this way

//$<AutoDeclare>
// DO NOT EDIT THIS SECTION MANUALLY
Var
   MIN : MidiInBlock
   nt  : NoteTracker
   nn  : Integer Array
   i   : Integer
//$</AutoDeclare>


On NoteEvent(m : NoteMessage) from MIN
  NoteTracker_GotNote(nt, m)
  if IsNoteOff(m) then
   SendNow(MIN,m)
  end 
End

// Called when beat changes
// Only beat number is valid for now
On BeatChanged(bar : integer, beat : integer)
  nn = NoteTracker_GetHeldNotes(nt)
  For i = 0; i < Size(nn); i = i+1 do
    SendNow(MIN, MakeNoteMessage(nn[i],100))
  end   
  NoteTracker_Clear(nt)
End
2 Likes

Unfortunately if you are a bit late in playing a new chord it could be a problem. :grimacing:

Who is too late will be punished by life

3 Likes

I try to test this out! Might take me a bit to figure out how to use the script. thanks.

Create a rackspace, give the MIDI In block the handle MIN,
open the rackspace script window and paste the code, compile, close and have fun :wink: