Synchronization

The synchronization is not implemented yet!!

One of the shortcomings of the currently available sequencer solution is synchronization. The sequencer can be the timing master and be used to synchronize other sequencers, or it can be a timing slave and thus has to synchronize to another time source. These two types are completely different and can even be used concurrently.

Synchronizing sequencer to external timing source

The sequencer can be used as slave to synchronize to another master.

In cast the sequencer has to sync to another source, it will keep using it's own local timer for determining schedule time of events. This local timer (not the central hardware timer) or the tempo will be adjusted to match the time master.

Sequencer as timing master

Synchronization events

The event transport mechanism is used for synchronization. Clients can send and receive synchronization events. Synchronization events can (just like normal events) be send to a specific client or broadcasted to all clients that registered for getting synchronization events.

The timer of the sequencer can be seen as an internal client. In situations where multiple timing sources exist (eg. MTC and audio) the client has to select from which source to handle the synchronization events.

A client can act as a synchronization master (transmitter) or synchronization slave (receiver), even at the same time!