Godel 2 includes a standard 2-oscillator FM subtractive synthesis engine, built entirely in gen~, with Yofiel's standard additional features such as multiple tracking modes, modulation matrix, and effects. The Godel arpeggiator plays notes in the same order played, with chords added during real-time play and/or to the arpeggiation at variable intervals.The polyphonic arpeggiation sequence is saved with the preset.

Godel 2 Main Panel
Godel 2 Main Panel

Godel 2 is open source and editable in Cycling74's Max 6.1.9+. PC and Macintosh binaries are now available. For features and the user manual, please see:

Godel 2 for Mac and Windows: Free Download

Design Innovations

The first fact you will notice in the structure is the absence of wires to most of the panel controls.

Godel 2 Top-Level Structure
Godel 2 Top-Level Structure

Wireless gen~ Panel Controls

This is because Godel 2 has a major design innovation. The data values for patch changes are passed into gen~ frompattrstorage, which is set tooutputmode 1 to generate lists of parameters. This allows usage of pattrastorage'schangemode attribute to thin out unnecessary parameter changes on preset changes. To see this routing, open the synth object, which also contains the settings panel, and change it to structure view.

Godel 2 Synth Subpatch
Godel 2 Synth Subpatch

The most significant part of this design may be the handling of messages from the top-level pattrstorage (not the second pattrstorage inside this patch, which simply saves the settings separately from the preset values).

Passing Messages into poly~ from Pattrstorage
Passing Messages into poly~ from Pattrstorage
The messages pass through two regular expressions.

  • As the pattr objects for some parameters are in subpatches, the first regular expression removes subpatch names by deleting any character up to and including a double semicolon in the string from the top-level pattrstorage.
  • As some parameters are not for gen~, the design uses a naming convention for object scripting names that parameters not for gen~ begin with 'x+'. The second regular expression locates any parameters which begin with 'x' and removed them from the message stream passed into the poly ~ object's gen~ instance for the synthesizer. Additional parameters are for the mono instance of gen~ that contains effects, and these are defined by scripting names that begin with 'd+'. The plus sign is converted to a space, and the messages pass through a routing module that finds the prefix 'd', to send the effects parameters to the mono instance of gen~.

The other path from pattrsotrage simply saves any parameter changes to preset 129. This is because the 32 poly~ instances load after pattrstorage autorestores preset values, so the poly~ objects do not receive any messages at startup. The design therefore includes a recall of preset 129 after startup, to restore the last state before the the file was closed.

The gen~ and poly~ Objects

The mono instance of gen~ is relatively straightforward, Here you can see the scripting names for the effects parameters simply end up directly in gen~ from pattrstorage. The limiter object is described elsewhere on this site.

Godel 2 Mono gen~ Instance
Godel 2 Mono gen~ Instance

the poly~ object contains some additional logic for muting unused instances. Upon startup and resets, the thispoly~ object receives a 'mute 1' message. Then to mute the poly~ instance after a voice finishes playing, the envelope from the gen~ object is sampled to create a reliable '0.0' source without spurious triggering of muting by zero transitions in the signal output. The snapshot~ object converts the MSP audio signal to a Max message. which is then filtered to remove duplicate values as the poly~ object resends its values every time it receives a message.

Godel 2 Poly~ Object
Godel 2 Poly~ Object

When the poly~ instance first loads, it sends its instance value to a route module, to select its note messages (this instrument has its own allocator, so TARGET is said to zero permanently). Also it sends its instance number up to the synth patch when the last instance is loaded during startup, to initialize sending of parameters from preset 129 to all instances.

The gen~ object inside poly~ looks complex, as it supports about 150 parameters, but the internals of the gen~ subpatches are mostly simple.

Godel 2 gen~ Synthesizer
Godel 2 gen~ Synthesizer

The oscillator, envelope, and filter sections are described elsewhere on this site.

Download

Godel 2 Beta 2

Change summary

  • Faster load
  • All controls are now parameters in live!, with defaults.
  • New.amxd shell opens Godel2 in Ableton Live!.
  • All panel controls have annotations (descriptions appear in the status bar when hovering over the panel control)
  • Curve knobs in the tracking windows are now bipolar. Tracking windows are improved.
  • In beta 1, when pitch remapping was on, changing keyboard transposition also changed the key. An additional panel control now allows changing key and transposition and separately.
  • In beta 1, some logic for mono controller signals, as modulation matrix sources, was missing.
  • Minor cosmetic improvements. For example, the settings panel is now in a separate subpatch.
buy

Godel2 (Win32)

Cost: $0.00