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.