MIDIClockOut:
Filter:
Classes (extension) | External Control > MIDI | Libraries > crucial > MIDI | Libraries > crucial > Scheduling

MIDIClockOut : Object
ExtensionExtension

a Player that sends MIDI Clock Out
Source: MIDIClock.sc

Description

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.

Class Methods

MIDIClockOut.new(deviceName, portName, tempoClock)

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.

Arguments:

deviceName
portName
tempoClock

defaults to the global default TempoClock

Inherited class methods

Instance Methods

.sched

.sched = value

.port

.port = value

.isPlaying

.play

at the start of the next bar (according to the default TempoClock) send a song position pointer of 0 and start sending MIDI clocks

.start

.next

.stop

stop sending MIDI clocks, effective immediately

.prepareToBundle(group, b)

Arguments:

group
b

.stopToBundle(b)

Arguments:

b

.synthArg

.cmdPeriod

.destroy

Inherited instance methods

Undocumented instance methods

.gotoBeatAtBeat(beat, atBeat)

Examples

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

Slaving Ableton

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.

Song Position Ptr

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.

Player compatibility

It will behave like a player if placed inside a player structure (it will play when told to, stop when told to)