Tag Archive: SMPTE

Network Timecode

I recently got to thinking about running multiple systems of Gener8 modules in sync, and the potential power that could be achieved for large scale projection etc.

While this is perfectly feasible within the current program (using MIDI clock over a local area network), someone handed me the idea of putting out the Timecode across the network and syncing to that.

At first I had my doubts. Any Timecode produced through the modules in Modul8 is subject to the resolution of the modules scripts, which is at a rate of 1 cycle per frame.

I had previously considered the generation a MIDI clock through the modules scripts, and then abandoned the idea due to this low resolution (as it would limit the range to something like 200bpm).

However, a clock for MIDI data, and a clock for video are two different beasts. Who needs to clock video faster than the output frame rate anyway?

So, I dug out the old Garagecube ‘Network’ module and started hacking away at the code, and after a couple of bleary-eyed late nights, I have a pair of Gener8 Launchpad modules locked into perfect sync.

Now, this is all very much on the rough side, and it’s a fairly long road before I’ll have something ready for everyone to play with, but it seems that the concept is sound, and I think this is quite big news.

Multiple projector set-ups with network synced video on a small budget are only a few steps away from here.

And a few more bleary-eyed late nights I think…

I will keep you all posted.


Timecode Protocols

I have now finalised the Timecode protocol for the Gener8 modules. If you are developing your own module(s) and wish to access this data, here’s a brief explanation of how it works.

I have tried to ‘future-proof’ the Timecode, giving it a full spectrum of possible data types. And although I have made changes to it with this last release of Gener8 (0.52), I promise not to meddle with it further (at least not too much).

The Timecode data is output from the Gener8 Launchpad module, and is available through the sharedDict library as:

The Timecode is of data type Dictionary, and contains the following values:

sharedDict[‘TIMECODE’][‘BPM’] – The number of beats per minute.

sharedDict[‘TIMECODE’][‘BAR_BEATS’] – The number of beats in a bar.

sharedDict[‘TIMECODE’][‘BEATS’] – The number of elapsed beats. This value is in the form of a list with values for Bar, Beat, Percent of Beat. (ie, sharedDict[‘TIMECODE’][‘BEATS’][0] = Bars, sharedDict[‘TIMECODE’][‘BEATS’][1] = Beats, sharedDict[‘TIMECODE’][‘BEATS’][2] = Cents,)

sharedDict[‘TIMECODE’][‘SEC’] – Elapsed time in Seconds (This could be used to calculate SMPTE values if required).

sharedDict[‘TIMECODE’][‘START’] – Boolean value to indicate if Clock is running. 0 = Off

sharedDict[‘TIMECODE’][‘LOOP_ON’] – The Timecode can also work in a looped form, this is a Boolean value to indicate if the loop is in effect.

sharedDict[‘TIMECODE’][‘LOOP_START’] – An offset value for the loop in beats. Do not use values of 0, a start value of 1 indicates there is no offset.

sharedDict[‘TIMECODE’][‘LOOP_LENGTH’] – Length of the loop in beats.

Note: Timecode values will be output when clock is controlled via external Midi clock.

%d bloggers like this: