Godel 3 for Ableton Live is now available for free. It fixes the Godel2 'no sound issue'; it is up to double the performance of Godel 2, uses less memory, and loads quickly; it adds 37 custom oscillator waveforms with variable shape and custom anti-aliasing, feeding an enhanced SVF with 5-dimensional gain compensation.
Here is a quick demo from a half-hour midnight session that shows what it can do.
Both Windows and Mac versions include both 32-bit and 64-bit Live instruments.
- 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.
- 2 complete oscillators with variable mix and ring modulation
- 37 oscillator waveforms, all with variable shape
- Unique anti-aliasing with the newest technology
- FM, sync, and FM feedback on all oscillators
- Graphical pitch tracking, graphical FM tracking, and wave display
- Variable mixing mixing of poles, saturation, and drive
- Graphical pitch tracking
- unfiltered oscillator mix with variable oversaturation
- table-based gain compensation across six dimensions
- 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
- Two ADSR envelopes, one with single, multi, and repeat modes
- Graphical gate velocity sensitivity
- Attack velocity sensitivity
- Pitch slope modulation
- High-quality chorus
- Ping-pong tempo delay
- Efficient reverb
- Custom fast-response limiter
- Direct, stored note, 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.
- Note on/off, program change, mod wheel, pitch bend, volume, all notes off, all sounds off, and MTC start/96-clock/stop signals
- 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 stored in the sequence played
- 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
- May add chord notes to directly played notes or arpeggiated notes
- Adjustable velocity response and duration for each note in the chord adds realism
- 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
- 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
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 find in-depth documentation on prototypes of the design internals on this site
- Ableton Live with Max for Live 6.1.9+ (32bit or 64 bit)
- Windows 7 32-bit or 64-bit, or MaCOS X (tested on Yosemite)
- 45MB disk space for extracted files
- Godel 3 uses ~200MHz for each voice, at 44.1KHz. Max for Live does not support multiprocessing, so the instrument runs on one CPU core. So a 2.5GHz processor core can play 12 voices. A 3GHZ processor core can play ~16 voices. The exact performance depends on the CPU features, especially 64-bit floating-point acceleration. Centrinos, for example, will perform very poorly. Intel i3/i5/i7s will perform as stated, and the number of additional cores won't make any difference to the number of voices.
The distribution contains this file and a self extracting executable package. Place the package where you wish to keep Godel and double-click it. It will expand to create the following subdirectories.
- ./yofiel/ - top-level directory
- ./yofiel/data/ - preset files
- ./yofiel/media/ - Osc and filt data, contained in 3 wav files
- ./yofiel/patchers/ - Max for Live Instruments
This directory tree can be in any location, but the subdirectory organization must be kept as is. After extraction, the self-extracting package is no longer required and may be deleted.
(Note:</> If you find this directory structure annoying, or want to understand why it is this way for any reason, a concrete explanation is on this site, here: Paths to Externals in M4L & Standalones ).
- In Ableton Live, you can create a shortcut to the /yofiel/patchers/ folder. As of beta3, there is one instrument for both 32-bit and 64-bit systems.
- Start the Live clock, so the clocked presets work.
- Open the Godel Live instrument. Wait a few seconds for the waves to display and the presets to load. When you see the waveforms, ADSR envelope sliders, etc, it is ready to play.
- Press the pink CLEAR button to turn off all notes. Also...:
- Check the arpeggiator and chord generators are off, and that the keyboard is in DIRECT mode (not STORED or TRANSPOSE mode).
- On the lower left side of the main panel, there is a setting for the maximum number of voices that a preset can use. Set this to its maximum value.
- Press the pink SETTINGS button to open the pop-up settings window. Here you will see a voice limit setting which overrides the preset voice limit, if the preset voice limit is greater. This enables you to play presets which were designed to use more CPU than you want.
- On the keyboard, now add one note at a time. If the sound breaks up, turn off the last note and reduce the max. number of voices in the settings panel. If it does not break up, and you have reached the current limit, you can try increasing the voice limit in the settings panel.
- Press the pink SAVE button to store the setting permanently. Setup is now complete.
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.
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.
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:
- In DIRECT mode, the notes route directly to a voice.
- In STORED mode, the notes are put into the preset. If the arpeggiator is running, the notes may add or replace those in the arpeggiation sequence, depending on the HOLD setting. Any preset may contain its own sequence of up to 32 stored notes, described in more detail below.
- Note: if you are in STORED mode and the arpeggiator is off, playing notes will make no sound. This could actually useful during real-time performance, as you can enter a sequence before starting to play it, so this is 'no sound by intent.'
- In TRANSPOSE mode, the MIDI notes change the pitch of the playing notes around middle C.
- Note: 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).
- Note: 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.
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.
- DIRECT and STORED 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 transpoers 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 STORED mode. By default, as you turn on each note, it is added tot he 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.
If the arpeggiator is off when you store the preset, but you have still have notes in STORED mode, 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.
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.
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 see Godel 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.
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!.
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:
- Metamusic architecture: Metamusic Architecture
- Godel's system-level design: Godel 2 in Beta
- Voice allocator prototype: Polyvoice Duo Prototype
- Arpeggiator prototype:Ula 1.3 Multiphonic Arpeggiator
- Pitch remapper: Ula 1.1 Pitch Remapper
- Antialiased oscillators: Antialiased Oscillators
- Waveset oscillators: 5.5K Waveset Oscillator
- Filter: 2/4-Pole Saturating State-Variable Filter
- LFO prototype: LFO Waveform Generator
- Envelopes: ADSR Envelope
- Limiter: Fast-Response Limiter
- Resolving Paths in M4L: Paths to Externals in M4L & Standalones
- 3b1, full release (3/14/2015)
- Initial release
- 3b2, hotfix (3/15/3015)
- Hotfix test for path calculation to externals
- 3b3, full release (3/15/2015)
- Internally calculates absolute path to externals.
- Single patcher for 32-bit and 64-bit modes.
- New S&H waveform on LFOs.
- Improved waveform display.
- Levels adjusted on presets.
- Three implemented scale maps are missing from the 'remap' panel listbox.
- The readme file does not contain details on setting keyboard DIRECT mode for sound to work.
- The flanger and main audio can lock up with high feedback levels (needs clamping)
- The current FM implementation does not support negative-range offsets.
When you are registered and logged in, you will be able to access the file download area: