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 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:
1. Design Innovations
The first fact you will notice in the structure is the absence of wires to most of the panel controls.
1.1. Wireless gen~ Panel Controls
This is because Godel 2 has a major design innovation. The data values for patch changes are passed into gen~ from
pattrstorage, which is set to
outputmode 1 to generate lists of parameters. This allows usage of pattrastorage's
changemode 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.
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).
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.
1.2. 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.
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.
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.
The oscillator, envelope, and filter sections are described elsewhere on this site.
2.1. Godel 2 Beta 2
- 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.