OSynC 1.0b VST plugin

Posted by X37V on May 03, 2013
OSynC / No Comments

OSynC is a way to synchronise performers, computers, applications with OSC. It is designed to be a stateless system, where performers can join or leave a performance, and receive tempo/time signature and other positional information on a number of time scales to remain in sync effortlessly with a host. It can also be used as a ReWire-like way to synchronise note-generating events across applications.

Typically, an OSynC host transmits transport information, and a client (either on the same machine, or on another networked machine) receives the stream of descriptors. OSynC 1.0b.vst grabs transport information from Cubase and formats a number of timing messages as OSC packets (sent over port 10101).

This VST plugin is intended to synchronise Max with a VST host, like Cubase. This allows Max to be an event generator, and have Cubase score/record synchronised MIDI events.

Order of messages within an OSynC datagram:

/osync/timestamp 773495082. 23582014.
/osync/play 1
/osync/bpm 125.7
/osync/timesig 4 4
/osync/fractime 59.665871
/osync/barcount 12
/osync/bar 4
/osync/beat 3
/osync/fraction 18
/osync/ramp 0.578125

 

Download for OS X

 

OSynC 1.0b (OSynC VST plugin/Max abstraction) - 1.0 beta, May 2013

The download contains a VST plugin (for Cubase) and a Max abstraction for unpacking OSynC packets and dispatching descriptors. Check out the OSynC-route.maxhelp patch for capturing and dispatching OSynC messages.

OSynC v0.7

Posted by X37V on July 13, 2012
OSynC / No Comments

OSynC is a way to synchronise performers or computers with OSC.  It has been designed to be a stateless low-latency system, where performers can join (or leave) a performance, and receive tempo/time signature and other positional information on a number of time scales to remain in sync effortlessly.  It can also be used as a Rewire-like way to synchronise control rate or note-generating events across applications.

Typically, an OSynC host transmits transport information, and a client (either on the same machine, or on another networked machine) receives the stream of descriptors.

Order of messages within an OSynC datagram:

/osync/timestamp 773495082.
/osync/play 1
/osync/bpm 125.7
/osync/timesig 4 4
/osync/fractime 59.665871
/osync/barcount 12
/osync/bar 4
/osync/beat 3
/osync/fraction 18
/osync/ramp 0.578125

Download for OS X/Windows

OSynC 0.7 (OSynC4Transport/OSynC4Live) - 0.7 alpha, July 2012

The download contains mxj objects for transmitting from Max and Live (plus a Processing sketch for capturing and displaying OSynC messages).  Check out the OSynC4Transport-Help.maxpat help patch for capturing and dispatching OSynC messages.

An update to the old VST plugin will follow.

OSynC v0.3

Posted by X37V on May 25, 2009
OSynC / No Comments

Jump to Download

OSynC-lite is a simple VST 2.4 plugin that transmits basic host transport information (from a VST compatible sequencer application) to another application on the same machine, as OSC messages.  This plugin is built with Pluggo for Mac OS X/Windows, so you will need to install Pluggo Runtime (free) from www.cycling74.com in order for it to work.

The OSynC-lite plugin obtains ReWire-like transport information from your ‘host’ sequencer and creates useful messages, for use in OSC compatible applications.

This information currently includes:

  • /play (returns a 0 or 1 depending on whether the host is playing)
  • /barcount (returns total barcount)
  • /bar (returns a mod 4 bar count, useful for quickly determining position in phrases)
  • /beat (returns the current beat of the bar)
  • /fraction (returns either incrementing 16ths or 32nds depending on settings in the OSynC Plugin, ie. 0-15, or 0-31)
  • /msticks (returns a float millisecond length between fraction increments)
  • /ramp (returns a float ramp from 0. to 1. much like a phasor~ [new addition in v0.3])

This plugin is still alpha. I will be adding features as I need them or if any are requested.

Why is this plugin useful?

This plugin was originally intended for personal use. I had a need to send sync info from one application (Cubase) to another (Max) but not necessarily steal/route the audio from one application (Max) into the other (Cubase).

The Master/Slave (or Mixer/Synth) setup with ReWire is always too complex for me, especially when using Max. I can’t remember which program to start first, and I don’t always want the audio of one application being sent to another.

The part about ReWire that I like most though is the transport controls. This plugin allows ReWire-like host transport information to be sent (without the need to worry about setting your Audio Driver to ad_rewire in Max for example).  Using an OSC-based sync plugin also frees one from tying up the audio I/O with the ReWire driver.

It is also useful if you want to send transport synchronous messages/controls from an audio application to a non-audio application.  An example of this is sending the clock from a sequencer such as Cubase to Processing for host-synchronous events. An example of sending clock/transport infomation from the host to Processing is included in the OSynC_Processing folder contained in the zip archive.  Also included is a simple Max5 patch for capturing output from OSynC-lite.

Download for OS X/Windows

OSynC-lite can be downloaded here:

OSynC-lite v0.3 (UB VST for Mac OS X) - second public release, alpha, May 2009

OSynC-lite v0.3.1 (VST for Windows) - second public release, alpha, July 2009
(Note: 0.4 will be out shortly, where message ordering will be improved)

I am about to start some research on live synchronous performance systems, and while this plugin is really simple, it is a nice place to start for simple synchronisation between applications.  My first application with this has been to drive the Monome as a sequencer from Cubase.  A Max patch will be posted shortly.

Let me know if you find the plugin useful.

alex at x37v dot com

Current bugs/limitations:

  • /msticks doesn’t return ms between fractions until tempo is changed. This was originally intended to reduce the number of OSC packets being sent, but it breaks CNMAT’s idea for OSC as a stateless messaging system.
  • The time signature of your host must be n/4, (ie. 3/4, 4/4, 6/4, 13/4) as n/8 produces unexpected results.  This will be fixed very soon.