Godel 3.2a for Cycling74 Max7 is now available for free download.
- New in 3.2: Completely open Max design; 3x-oversampled SVF filter now has 4-D table-based gain compensation, continuous lo/band/hi modes, continuously adjustable 0~24-db-octave slope, continuously variable drive with saturation, continuously variable feedback; much lower CPU load (typically 0.5%/voice on 3Ghz i7). the audio path is completely in gen~, and mostly in codebox; 34 waveforms with custom antialiasing and contour modulation; interactive waveform display; Improved setup and load. dynamically adjustable polyphony.
- Built for performance and quality: First audio instrument built entirely in gen~, for complete internal 64-bit operation; Custom antialiasing and 3x oversampling; More than 150 automation parameters
- Modular modulation matrix: Six assignable polyphonic modulations with individual level control for each matrix selection; 21 sources, including envelopes, LFOs, gate levels, voice number, oscillator pitch, and external MIDI controllers; 37 destinations, covering all main audio parameters.
- Custom oscillators: 2 complete oscillators with sync, FM, FM feedback; variable mix and ring modulation; 37 oscillator waveforms, all with variable shape; unique anti-aliasing with the newest technology; graphical pitch tracking, graphical FM tracking, and wave display.
- 12/24-dB/octave filter: Variable mixing mixing of poles, saturation, and feedback; graphical pitch tracking; unfiltered oscillator mix with variable oversaturation; table-based gain compensation across six dimensions.
- LFOs: Two polyphonic LFOs with gate sync option; Sine, pulse, saw/triangle, and S&H waveforms; adjustable waveform shape and frequency; polyphonic spread by frequency or amplitude.
- Envelopes: Two ADSR envelopes, one with single, multi, and repeat modes; graphical gate velocity sensitivity; attack velocity sensitivity; pitch slope modulation.
- Stereo effects: phaser/flanger; high-quality chorus; ping-pong tempo delay; efficient reverb; custom fast-response limiter with adjustable attack and release
- Keyboard: Direct, arpeggiator, and pitch transposition modes; multicolor display; notes may be stored in the preset and recalled in the same order played; transpose, scale remap, mod wheel, and sprung pitch bend.
- MIDI input: Note on/off, eight assignable controllers, program change, mod wheel, pitch bend, volume, all notes off, all sounds off, and MTC start/96-clock/stop signals.
- Arpeggiator: Sequences notes in the order played, with adjustable rate; the arpeggio may either adjust to the number of notes on, or with fixed note count, allowing new notes to substitute into the arpeggio; Hold mode allows including multiple notes with the same pitch in the arpeggio; notes are fully polyphonic with adjustable duration (notes may overlap); Keyboard input in direct mode may play along with the arpeggio; adjustable rate, syncs with external clock.
- Chord generator: May add chord notes to directly played notes or arpeggiated notes; adjustable velocity response and duration for each note in the chord; pitch remapping to different keys with sophisticated note cache system to track note-off events even when remapping is changed while a note is on, for either direct notes, stored notes, or both; arpeggiated chords may have variable and intervals and patterns.
- Auto Sequencer: Simple way to build long song sequences with minimal effort; simply switches to next preset after the number of chosen bars, when enabled and clock is on.
- Custom voice allocator Optimally assigns notes for best quality when CPU resources are low, with complex note age adjustment both for note on and note-off events; number of voices may be changed during play without interruptng playing notes.
- Presets and preset bank management: Loading and saving of external preset files; single-click recall, save, and delete of 128 programs; last session state restored when starting a new session; text comments stored with each preset.
- Open component design: you may also find in-depth documentation on prototypes of the design internals on this site
- Cycling 74 Max 7.
- Windows 7/10 32-bit or 64-bit, or MaCOS X+ (tested on Yosemite)
- 50MB disk space for extracted files
Installation and Setup
- Extract the zipfile to any location. Start Max then open the project file in the zipfile's root directory from Max.Wait for the pop-up welcome screen to close before continuing.
- If the settings panel is not visible, press the pinkSettings button in the main window's bottom right corner to open the pop-up settings window. These settings override those chosen in the main application menu.
- The settings page's voice limit setting overrides the maximum number of voices available in the main panel. If the sound breaks up on your machine for the presets provided, reduce this setting.
- Before saving, adjust the path to thegodelPresets.json file to your system. It is located in the DATA subfolder.
- Set "show settings at startup in the top right corner, as desired.
- Now press the pink SAVE button to store the setting permanently. Setup is now complete.
General UI Features
All the knobs and sliders have the following features:
- Downward-pointing arrows next to text indicate that clicking the text opens a menu.
- Text with yellow or grey background are toggles (yellow indicates selected state).
- Text with Pink background is a button to trigger an action.
- Clicking arrows over knobs resets the parameter to a default value.
- Clicking arrows in number boxes resets the parameter to a default value.
- All the instrument controls are available as parameters in Ableton Live!.
Welcome to Godel, a high-quality real-time performance instrument with a unique sound and control architecture, referred to as 'the metamusic' system, under development since 2003.
Audio Signal Path
This synthesizer has a pretty much standard audio path routing, as shown in the next figure.
The only really unusual feature of it is the polyphonic modulation matrix, which connects all audio and control signal sources to all polyphonic parameters that may be modulated, at audio rate. Also this instrument allows both oscillator to SYNC with each other, simultaneously if desired; and both oscillators include FM feedback as well as FM modulation of each other, simultaneously if desired.
Not only does Godel 3 include table-based gain compensation for the filters, but also it includes a very exact limiter, with attack and window size control.
The 'attack' controls the rate at which the signal is reduced when it exceeds unity gain, and the rate at which the attenuation is reduced when the signal falls below threshold. The 'window' sets the duration over which the limiter looks for peak values, before it starts any change to the output level.
If you are playing many notes, you will find these controls drastically change the feeling of the output, as they can work with the envelopes to master the amount of 'punch' during a new notes attack/decay stage. The voice level display, on the panel left, can help you decide on the best setting.
MIDI Data Path
The MIDI routing is very flexible, and every subpanel can work in several different ways, making the metamusic system very powerful; but the downside of flexibility and power is complexity, so here is an attempt to explain it as clearly as possible.
First, support for all standard MIDI control and clock signals is implemented, but before advancing to control, please take a moment to understand the note architecture. This is because the instrument can not only receive MIDI notes, but also generates notes internally from its keyboard, arpeggiator, and chord generator, in several different ways:
Godel 3.2 improves the keyboard interaction over previous versions. There are now two separate note stores for DIRECT and ARP modes and no separate STORED mode..
- InDIRECT mode, played notes route directly to a voice. When a preset is stored, any pressed notes are stored with the preset and turned back on when the preset is selected again.
- InARP mode, pressed notes are put into the arp store instead. The arpeggiator must be turned on and running for the notes to be heard.
- InTRANSPOSE mode, the pressed notes change the pitch of the stored notes around middle C. The transposition updates the 'transpose' setting in the number box directly to the left of the keyboard, and that setting is stored with the preset, so if you store the preset, it recalls with the same pitch offset (displayed in green on the keyboard). The transposition is applied to new notes sent to the voice, and does not affect playing voices.
The note mode, as with all other parameters except those on the settings panel, is stored in the preset,so changing the preset may change what the keyboard and notes do. In addition, theCLEAR ON RECALL can be turned off so that changing a preset adds notes to those palying already, rather than turning them off first.
Algorithmic Tune Composition
Godel 3 offers a basic implementation of the metamusic architecture, with processing of stored note sequences as follows:
- Stored notes pass to the arpeggiator, which, if ON (and receiving a clock signal from LIVE) generates notes at its own intervals. By switching to DIRECT mode, the notes do not pass to the arpeggiator but still go to a voice, so in DIRECT mode you can play along with an arpeggio without changing it.
- Both DIRECT and ARP notes may generate chords in the chord generator. You may generate chords from either the arpeggiator, or from direct notes, or both, at division intervals set in the chord panel.
- The transposer shifts the pitch of all new notes from all sources in semitone increments,
- Direct notes, arpeggiated notes, and chord notes then all pass into the pitch remapper, which moves new notes to any key and scale you choose. As with the transposer, this pitch remapping is applied to new notes, and does not affect any playing notes.
- The pitch remapper sends all the resulting notes to a custom voice allocator. It finds the least recently used voice and sends the note-on event to it. Note-off events from MIDI, keyboard, arpeggiator, and chord generator are handled separately, so for example, turning off a DIRECT note does not turn off an arpeggiated note of the same pitch.
- The on-screen note monitor, on the lower left of the main panel, shows the playing notes pitch (red), volume (blue) and age (green). As the envelope cycles for a note, you can see its individual volume rise and fall. This is useful for seeing the gain distribution of the polyphony, for adjusting the output level and limiter.
- The simple preset sequencer can load the next preset automatically after the desired number of arpeggio bars.
This is sufficient to create interesting sequences with minimal interaction. More sophisticated versions of the metamusic system have multiple copies of the arpeggiator, chord generator, and additional sequencers, as well as different trigger modes, to permit construction of complete melodies from half a dozen such subpanels.
Pressing the pink CLEAR button turns off all notes and clears all notes from the preset store. Now turn on the arpeggiator and clock, and put the keyboard in ARP mode. By default, as you turn on each note, it is added to the sequence in order played. As you turn off each note, it is removed from the sequence.
- In the arpeggiator, you can also set a fixed number of notes instead of AUTO counting notes. Say for example you set it to four notes. When you play only three notes, there will a rest after the third note. If you turn off one of the three notes, there will be two rests after the second note.
- Now the above assumes HOLD mode is off. Turn HOLD on, and note-off events are ignored. When you turn off a note, it remains in storage, and then you can play the same note again to add the same note multiple times into the sequence.
When you store a preset, the notes are stored in the order you played them. If the arpeggiator is on, and the clock is on, and you store the preset, then the next time you recall the preset, the same arpeggio is restored with the notes in exactly the same order.
Recalling Stored Notes
If the arpeggiator is off when you store the preset, but you have still have notes in stored in the preset, then when you recall the preset, the instrument still recalls the stored notes and turns them on, but does not arpeggiate them. This way, you can use presets to recall chords. This is why the instrument also allows limiting the number of notes per preset slot. You can make two presets with the same sound settings, but different stored notes. Depending on the number of voices available, some or all of the notes previously playing will be swapped for new ones.
All notes may optionally pass through the chord generator also. But note the chord generator does not add chords until you play new notes. When you change a preset to one which adds a chord, the old notes may continue to sound, but only new notes will get chords added to them.
Presets and Parameters
Each preset bank, which you may choose to load or save, contains 129 presets. The first 128 are recallable by MIDI program number. The 129th contains the state of the instrument when you quit, and restores the same state when you open the instrument again.
As a side note, many programming facilities are available for initialization and auto-restore, but they do not work reliably on a polyphonic instrument, because they tend to send their initialization values before all the polyphonic instances finish loading in a design this large. So the instrument keeps its own initialization state, and for this reason, the default .JSON files must be in the correct location for it to load and work properly. However, if you do open it and the presets are empty for any reason, you can use the LOAD button to start up a preset bank, and then it should work again.
in Ableton Live, there are also programming methods to sync the LiVE presets with the M4L presets. I did get this working, but with a polyphonic instrument and >150 parameters, the instrument would hang for several seconds after changing presets, while the main program syncs itself up. So the instrument instead maintains its own preset data internally, which may still be recalled by MIDI program changes.
Changing Individual parameters
Ableton Live also has a facility to access instrument controls individually as parameters. I have implemented this as well as I can, and while I am not an Ableton expert, all the instrument controls do show up in the parameter page, with long names consistently written, and with tooltips for each control.
Note however, if you are an Ableton expert, that you cannot change the short names for the parameters, because the short names directly map to param values in gen~. Technically, this is because the design internally does not connect panel controls with lots of message wires, but instead sends changed parameters from pattrstorage directly to the gen~ objects inside each voice instance, which have their param names set to be the same as for the pattrstorage names. The upside of this methodology is that the pattrstorage object filters out identical values on preset changes, which is why the instrument can run so efficiently on control and preset changes, even though it has so many parameters; and additional filtering or name prefixing is not required, as it is all done by the pattrstorage object. If you are interested in understanding how, please seeGodel 2 in Beta.
The instrument does also support MIDI control messages, so if you prefer to play it with your own MIDI controller, you don't need to do any mapping inside Ableton to send MIDI controller data to different parameter values.
The instrument contains thumbnails next to tracking panel controls for the oscillator pitch, oscillator FM, oscillator feedback, filter cutoff, and envelope gate sensitivity. Clicking the thumbnails opens a popup window for detailed settings of tracking behavior. The panels are al;so accessible as tabs.
To save CPU, the graph is a piece-wise linear approximation of the actual output. Tracking values are actually calculated to 64-bit floating-point accuracy in gen~. This provides very fine control in response to note pitch and velocity, giving the instrument more dimensionality and humanization.
Hovering over the graph causes a hollow circle cursor to appear around the intersection of the breakpoint and shift.Clicking, or clicking and dragging, in the graph changes the values for both breakpoint and shift at once. The other tracking controls allow setting of curve and tracking enable, as well as breakpoint and shift. The graph updates automatically when they are changed.
When turned off, this disables tracking. The shift or sensitivity control affects the output value regardless of the input pitch or velocity.
Tracking may not be disabled for the filter cutoff.
|-10. ~ +10||0.|
When tracking is on, optionally applies an exponential curve to the tracking response. When zero, the response is piecewise linear with two segments. With greater negative or positive values, the curve is steeper. The inflection reverses around the breakpoint.
Splits the input values into two separately scaled segments.
Shifts the breakpoint up and down if tracking is on, of sets the output value regardless of input value if tracking is off.
Technical sound designers refer to two characteristics of FM: the frequency ratio and modulator index, which define the ratio of the modulator frequency to the carrier frequency, and the depth of the modulation. While this allows precise definition mathematically, it is not easy to understand.
Yofiel's FM modulation uses a different method, since its first FM designs in 2003. Instead of frequency ratio, the carrier frequency is defined by another oscillator, which may be heard at the same time,and the pitch offset is in MIDI note numbers. So if the pitch is the same, and both oscillators track MIDI notes the same way, then the frequency ratio is 1:1. If the pitch is increased by an octave, the frequency ratio is 2:1. Pitch tracking may also be disabled for any oscillator and the pitch set to a fixed amount, or the pitch can change by a different scale, even with a curved response, over the keyboard range.
The modulation index may also be fixed, or set to change over the keyboard range, in the same manner. This allows FM modulation frequency and depth to vary in response depending on the note pitch. With the modulation matrix, the FM may also vary in response to velocity, or be modulated by an LFO, or even change depending on the voice number, allowing more flexibility in FM modulation than is available in any other known design architecture.
Please see the separate Web page for the Metamusic Panel Reference.
Additionally, if you are interested in the design, there are copious design notes and downloadable examples for Max 6, in the following topics:
- Voice allocator:Polyvoice 3 Advanced Polyphony Manager
- Pitch remapper:Yofiel Scale Remapper
- Chord generator:Yofiel Chord Generator
- Antialiased oscillators:Antialiased Oscillators
- Waveset oscillators:5.5K Waveset Oscillator
- Envelopes:ADSR Envelope
- Limiter:Fast-Response Limiter
- Filter:2/4-Pole Saturating State-Variable Filter
- Adjustable tracking object:Yofiel Adjustable Tracking Object
- Godel 2 system-level design:Godel 2 in Beta
- Arpeggiator prototype:Ula 1.3 Multiphonic Arpeggiator
- LFO prototype:LFO Waveform Generator
- Resolving Paths in M4L:Paths to Externals in M4L & Standalones
- a3 (12/4/2016): fixed envelope 2 multiple mode; minor panel improvements
- filter feedback needs adjustment; envelope 2 single and loop modes not implemented; tempo delay panel lights timing needs adjustment. when turned off, 'clear notes on recall' does not keep old notes after changing preset.