Category: Developers Area

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.


Today, rather than working on Gener8, I have released another module for you all to have some fun with.

Announcing the LFO (global) mod!

Yes, Modul8 is riddled with LFO’s (low frequency oscillators), and I’ve never really been short of one when I needed it, but years of working/playing with analogue synthesis has made me become quite comfortable with the idea of a global LFO available from every point in the system, which is what I have done with this mod.

You’ll find it in the online library (within the Modul8 app itself – modules menu – online library – public library).

Entitled: (at) LFO (global) v1.0
also: (at) LFO Router (layer) v1.0 and (master)

The mod contains 2 LFO’s and one BPM controlled waveform. LFO 2 has the option of being modulated by LFO 1, giving rise to quite complex waveforms, and all three can be applied to your selected controllers in varying amounts in the router modules.

The mod makes the values of the LFO’s available through the shared dictionary. Details of how to use this are in the info section of the module itself. But if you need any help I’ll be glad to help.

I shall be writing a more extensive manual on the mods on my website. In due course.

Have fun!


With the inclusion of Gener8 in your projects, the standard form of Layer Contextual modules becomes a little less relevant, as we start to change video at the Gener8 Clip level.

I have written Gener8 with this in mind, and it is a fairly simple process to produce an update of your own Layer Contextual modules which include a sensitivity to the Gener8 Clip changes produced by The Gener8 Launchpad module.

All that is required is a small script which to be included in the Periodical Script, which listens out for changes, and a few Functions in the Init script to collect information about settings, and update changes.

I am currently in the process of finalising the protocols to this, and will be making the finished scripts available as soon as I get a fully tested Alpha version available.

If you would like to update a module to be compatible with Gener8, or create a new one from scratch, let me know about it and we can have a chat – I may be able to help you with some of the planning.

%d bloggers like this: