GP as MIDI Clock Master

My understanding is that Ableton link is for connecting GP and PD to inform about a) tempo and b) play state, but for the purpose of having a software based Midi Clock that can be forwarded through GP to external devices for sync. GP currently does not provide the option of being a Midi Clock Generator for the “outside world”. For what else would the PD module else make sense. It is a Clock Generator sending out a Midi Clock. If you cannot forward the Midi Clock from within GP, then PD is just for being on its own…

Does PD support Ableton LINK?

Maybe that helps

Not sure I understand. If you create a midi clock with PD, you should be able to send it out through a MIDI Out block.

What am I missing?

You should have MIDI clock out from Pure Data regardless of the connection. By default is should be 120BPM. The Pure Data I did here was to generate an external clock for syncing devices to GP. There is currently no way of merging data into the Pure Data example, you would need an external merge, although it would not take a lot to extend this to include a MIDI in to allow merging.

Also, as Pure Data is a separate application it requires the MIDI port to be connected directly to Pure Data this is then not available in GP.

No, there is a very good VST available that runs PD

Plug Data (VST version) does not support Ableton link so you have to use Pure Data a stand aside application and not a plugin. Unless someone has done a source compile for Plug Data with the Ableton libraries included. As far as I remember Plug Data cannot load modules like Pure Data.

That is my understanding: loopMidi10 out from PD to GP and in GP loopMidi10 in for receiving the Midi Signal. In Protokol I can see that Midi Data is flowing in/out, but in GP Midi Monitor attached to loopMidi10 does not show any Midi data flowing from PD, as if GP is blocking those Midi Data artifacts from passing. For the fun I tried using Bitwig for the same purpose: Bitwig sending Midi Clock trough loopMidi10 out and voila: Protokol shows a lot, GP Midi monitor nothing.

pianopaul: you are referring to PlugData / Camomile, which is a VST wrapper for Plug Data - that is not what I am doing. I am using Plug Data outside as the topic creator proposed. Don’t know whether Camomile supports Link…

Nothing - loopMidi10 Out works in PD and sends out data, which I can verify using Protokol. In GP loopMidi10 out is disabled, so it does not grab it. loopMidi10 is is enabled and should receive data, but within GP it does not. But that is the purpose of loopMidi: have seperate In/Out which can be claimed by different applications to route midi between.

And to be clear, I used another Midi routing app supporting Ableton Link (Midi Matrix) and had loopMidi10 out sending to Novation Peak and I could see the clock synced. So PD sends data using the loopMidi10 out out and it flows into loopMidi10 used in another application. I am suspecting GP to block that kind of traffic.

Just had a go at replicating what you are trying to do. Running GP 4.8.2 on a Win10 PC in rig manager I do not see the option “Responds to MIDI Clock” on any virtual MIDI input.

Alias the left side devices…

You live and learn.

I can see the clock is coming in via the Options/Midi Ports…

But cannot make it flow through GP
image

And I can see some Midi Sysex Stuff happening when I press the play button in both Link Master/Slave

It doesn’t flow through GP, it sets GP’s BPM

If I understand correctly what you want to say: any Midi Clock signal going into GP via a Midi IN is filtered out? In other words: no chance for using an external midi clock? I have tried with Polybrute sending MidiClock. Protokol shows: Midi Clock Signals coming from Polybrute. GP with Midi Monitor to Polybrutes Midi Port: no data. That would reaffirm what you say…

Gig Performer responds to an external MIDI click by setting the BPM of the Gig Performer global playhead. That’s typically what a synth (with a sequencer, say) does. When it receives a MIDI clock from somewhere else, it uses it to set the BPM of the sequencer (or perhaps a delay) in the synth.

So here is a quick fix for getting a clock and active sync out of GP. I have modified the PD patch to send CC#102 instead of system real time messages. These messages happily flow into GP and do not need any further enabling.


ableton-link-sync-midi-slave-viacc.zip (958 Bytes)
When these messages are received they can be converted back to system real time messages by a very short scriptlet.

//Called when a CC message is received
//The CC numbers must be within the specified range

On ControlChangeEvent(m : ControlChangeMessage) Matching 102
    SendNow(MakeMidiMessage1(128+GetCCValue(m)))
End

Using loopMIDI virtual cable to test I created the following GP wiring. Ableton Link is active and shows the link to the PD application. The clock/CC#102 output from PD is input to GP via loopMIDI Port 1.

The output (loopMIDI Port 2) is monitored externally with Protokol and the clock and active sense can now be seen in the trace, this will allow MIDI merges to take place within GP.

On an unoptimised Win10 i5 machine this has a relatively high toll on CPU usage 1%, but should be fine on faster machines.

Optimised the PD patch to use MIDI running status.


ableton-link-sync-midi-slave-viacc-runningstatus.zip (1.0 KB)

1 Like

Maybe I’m not getting it, but when PD runs as a vst3 plugin, as far as I know, clock messages will not be transmitted by the vst3 framework, nor will, play, stop, etc. be propagated by a vst3. VSTs however can transmit this kind of midi messages.