As a player this produces no audio, but emits MIDI Clock. It can be simply played and it will start sending. It can be added to a PlayerMixer and it will play in synch with the other players.
The device and port will be looked up by name. see MIDIOut *newByName If nil, it will default to use the first connected midi destination.
deviceName | |
portName | |
tempoClock |
defaults to the global default TempoClock |
at the start of the next bar (according to the default TempoClock) send a song position pointer of 0 and start sending MIDI clocks
stop sending MIDI clocks, effective immediately
group | |
b |
b |
Command-period will send a midi clock stop and stop sending further clocks.
Changing song position pointer is not yet supported, though its possible.
Sending to other applications in OS X
First see MIDIOut regarding IAC busses
In Ableton Live enable the IAC Bus as an input. On that input, enable Sync
In the main arrange page you should see the midi clock light on the left side blinking on the beat. Click EXT to slave to that external.
Turn on the Ableton metronome
open the tempo gui:
and turn on that metronome too. You should be able to hear the exact time difference.
In Ableton's preferences you can adjust the MIDI Clock Sync Delay. I found 68.0ms to be about right.
Note that different approaches to server latency on the SC side might require you to use a different sync value. crucial Players aim to always play on the server at the logical time specified by the default TempoClock, without any added latency. In other words I always make sure that the SC language is scheduling and sending bundles ahead of time with the intention of arriving and executing on time.
Currently it starts playing at 0 and keeps on going. No relocate yet. I'm thinking about the best way to handle this in a global SC fashion. Something like TempoClock where there is a default global timeline and that can be relocated and will send notifications for interested parties that also need to relocate themselves. MIDIClockOut would then listen for those notifications. The main problem is that TempoClock doesn't like to be relocated to a different beat.
It will behave like a player if placed inside a player structure (it will play when told to, stop when told to)