The envelopes and sequencers in Marx are perhaps its most notable innovation.
If you've ever tried building your own modular synthesizer, you know that triggers and gates are often the limiting factors in the design. Marx Modular has perhaps the most flexible trigger/gate routing available anywhere, but all the complexity is hidden behind simple list panels, letting you set up complex paths with just a few mouse clicks.
The envelopes support many different MIDI/sequencer and mono/poly configurations. Let's start by looking at some basic envelope configurations.
- Set ENV1's gate source to be MIDI. That's pretty simple! But now you can already do several things:
- You can select more than one envelope to be triggered from MIDI. Each envelope then generates its own separate notes. For each envelope, its HOLD list controls the minimum note duration, and PREDELAY sets a tempo period before the note starts playing, separately. So you can tap a MIDI keyboard to generate one fast note and a long note simultaneously; you can set predelays so the envelopes work like an echo unit; and so on.
- In the UNISON panel, you can select any of ENV1-3 as a UNISON source. This lets you create two, three, or four notes from one source note. If you set ENV1 as the unison source and set unison to 3, for example, then each note from MIDI generates a 3-note chord for ENV1. Note that in this case ENV2 and ENV3 can still generate single notes which are not turned into chords.
All the notes from envelopes 1-3 and the unison panel are internally combined inside the instruments's own voice allocation logic, which assigns voices on a least recently used basis. This means, if one envelope is playing a long note and another envelope is playing a fast sequence, the fast sequence does not cut off the long note. The three envelopes and unisono unit effectively share the polyphony to the best result possible.
The voice allocation takes envelope predelay into account too. The predelay will remember notes up to the number of available voices, without wasting polyphony.
If you have two envelopes triggered by MIDI, each envelope gets its own voice for each note, so each MIDI note would use up two voices. Instead, you can set one envelope to trigger another envelope. In that case, the second envelope uses the same voices as the first envelope. This can get pretty interesting, for example:
- O1 feeds F1 input
- O2 feeds F2 input
- MIDI triggers Env1 which gets audio from F1.
- ENV1 triggers Env2 which gets audio from F2.
Now the two envelopes are both playing different sounds on different filters from the same oscillator, without using up additional voices! Or for a more complex configuration:
- O1 and O2 feed submixA, which feeds filt1, which feeds env1.
- O3 and O4 feed submix B, which feeds filt2, which feeds env2.
- O5 and O6 feed submix C, which feeds filt3, which feeds env3.
- MIDI triggers env1; env1 triggers env2 and env3.
Now with different pitch offsets for the oscillators, one MIDI note can generate 36 different pitched-tones. Of course, rarely would you want to do that (of if you do, then you can use distortion and waveshaping for even more complex sounds).
And there are other times when you want each envelope to get its own voices, rather than share the same voices. In that case, simply turn the audio on for multiple envelopes and select the gate source for each separately.
So far we've only discussed audio envelopes, but sometimes envelopes are useful that work at event rate instead. If you want really good sound quality with rapidly changing envelopes, you can use the audio output from the envelopes. But many times the event rate is fast enough.
Thus, if envelope 1-3 audio is off, internal logic disables the mixer channel path, for reduced CPU usage. However, even if the audio source for an envelope 1-3 is switched off, the envelope still works at event rate, but uses much less CPU. So if you are not using audio output from env1-3, you can save CPU by turning their audio off. (Or you can use Envelopes 4-6, which always work in event envelope mode.) In event mode, the envelopes use no CPU at all except when they have been triggered and are calculating an event curve.
If the audio is off, the event envelope can be gated by another envelope, to create polyphonic envelopes. But envelopes can also be gated by MIDI, sequencers, LFOs, and S&H units-but the envelope doesn't know how to map these gate sources to the playing audio. So if the trigger source is not another envelope and its audio is turned off, it functions monophonically, sending the same envelope to all voices.
Alternatively, if you want to switch to another snapshot which uses an envelope's audio output-without interrupting the sound output-then leave the audio on in the envelope, and in the two snaps, change the MUTE button in the output mixer channel to enable/disable audio instead. This will use more CPU, but lets you change soundscapes dramatically with a snap change, without putting any clicks in the sound.
While this all may sound very complicated (and took a long time to work out), it's easy to see the effect visually in the different modes with the voice level meter in each envelope panel.
The "Mode" list selects the way the envelope is triggered and gated. MIDI, sequencers, other envelopes, and LFOs can trigger the envelope. Trigger modes function as follows:
- MIDI : incoming midi notes gate the envelope polyphonically. If more than one envelope uses a MIDI source, then separate voices are assigned to each envelope.
- Env1/2/3 : The envelope is triggered and gated by another envelope. In other words the envelope tracks the other envelope exactly.
- SEQ STEP : any combination of the sequencers can trigger the envelope. Gate time is controlled by the envelope HOLD time. Note the sequencers can themselves be triggered and gated by MIDI, for more complex sounds.
- SEQ LOOP : the envelopes can also be triggered by the first step of any sequencer.
- LFO1/2/3 : when the respective LFO value rises above 0, the envelope retriggers.
For sequencer modes, the "Hold" list controls the duration of the high gate. All envelopes are fully polyphonic, so sustain and release phases an overlap for consecutive notes, up to the available polyphony in the Reaktor instance. Note, all three envelopes share the available voices, so if there are long hold periods for one or more envelopes, voice stealing can affect the sound.
For MIDI modes, the "Hold" value sets a minimum duration of the note. Even if just touching a MIDI key on an input keyboard, the gate will stay high for the hold period. If the MIDI key is held down longer than the hold period, the gate will stay high for as long as the key is held down.
Sets the delay after a trigger before the envelope gate starts. PREDELAY also affects notes arriving from a keyboard, so if there is a predelay period you won't hear a note for awhile after pressing a key.
If audio is off, predelay is applied to the gate signal from the MODE source. This means for example, if audio is off on Env1 and its trigger mode is ENV2, then setting a predelay on Env1 causes its gate from ENV2 to be delayed.
The XY panel displays the current level of each voice. In addition the Y axis provides overall control of the envelope amplitude. Velocity modulations are applied to the level set in the XY control.
The A, D, S, and R sliders are the envelope's preset attack, decay, sustain, and release values, before modulation by velocity, pitch, and matrix2.
SENS sets the sensitivity of the envelope to velocity.
- Values between 0 and 1 scale the velocity effect.
- If set to 0, the envelope velocity is fixed by LVL. If set to 1, the envelope is fully responsive to velocity.
- If set to negative values, higher velocities reduce the envelope amplitude (useful for attenuating event modulation).
The listboxes select which ADR timing parameters are affected by note pitch and velocity. The numeric panel sets the sensitivity of velocity scaling:
- 0: pitch/velocity is ignored.
- Higher values increase sensitivity
- Lower VSCALE values invert sensitivity. Lower PSCALE values decrease sensitivity.
The sequencers can be triggered by MIDI, or they can trigger each other, or they can loop in time with each other. The simplest way to use a sequencer is to set its MODE to LOOP, then set one of the envelopes to use its output. But even with that there are many possibilities:
- Each envelope can be triggered by any number of sequencers.
- Each sequencer can trigger any of envelopes 1-3 polyphonically.
- In the sequencer panel, each sequencer can modulate the pitch and velocity of other sequencers.
Moreover, Matrix 2 provides even more ways to modulate sequencer parameters.
Sequencers are also available as trigger, gate, and modulation sources throughout the rest of the instrument.
The four sequencers are viewable in the A panel by selecting the "Edit" button. They are also editable separately in the B panel.
turns on and off all five sequencers. When turned on, the clock counter is also reset to 0.
just causes the view to show just those enabled steps for each sequencer, and does not otherwise affect the sound.
For the MIDI modes, the sequence is transposed by the played MIDI key around middle C. For example, playing the D above middle C causes the sequence to be transposed up two semitones; but only for the MIDI modes! You can also use the event matrix to transpose the sequence; for example, sequencer 2 can transpose sequencer 1.
The sequence loops, and the sequencers synchronize their steps.
For all midi triggers, the sequence pitch is also transposed by midi around middle C.
- MSTEP : A MIDI note advances the sequence one step.
- MGATE : MIDI notes gate multiple transposed loops, all loops in time with each other.
- MSYNC : each MIDI note starts a new loop synchronized with the note-on event, and the loop plays until its note is released. Multiple notes cause overlapping loops.
- MHLD : Like MSYNC, but loops continue until all keys are released and a new key is pressed.
- MSHOT : Each MIDI note starts a separate polyphonic sequence which plays once then stops. If a previous sequence is playing, the sequences overlay each other polyphonically.
Like MSHOT, but triggered by a sequencer step with a velocity higher than zero.
Like MSHOT, but triggered when the other sequencer starts its sequence.
when a voice on the corresponding LFO passes from 0 to 1, the sequencer advances one step.
when the sustain (foot1) or hold (foot2) pedal is pressed, the sequencer advances one step.
sequencer is triggered by sample and hold.
sets the duration of each step in tempo units.
sets the number of steps that are played in one iteration through the sequence.
Selects one or more sequencers which transpose the pitch of the output. Pitch transposition is additive around the center line (middle C) for each sequencer.
Selects one or more sequencers that adjust the gain.
Gain adjustment is multiplicative: if the velocity of any source sequencer is zero, the target sequencer will produce no output step.
Delays alternate notes. If positive, even notes are delayed; if negative, odd notes are delayed. At maximum settings, the delay is such that the delayed note overlaps the next note from the sequencer.
Selects the sequencer for table edits in the A panel, and also selects the sequencer for permutations.
The PERMUTE module lets you edit the sequences in various ways.
selects the sequencer for the pattern segment.
selects the first step for the pattern segment.
for the selected sequencer sets the number of steps in the pattern segment.
Copies and pastes the current pattern segment to edit buffer.
Flips the selected pattern segment from left to right, so that the last step becomes the first and the first step becomes the last.
Rotates the selected pattern segment to the left or right. Press repeatedly to rotate again.
Rotates all 16 steps.
Shifts the selected pattern segment up or down one step.
- Instead of using the chordgen panel, set multiple sequencers to Mstep and send them to the same envelope for polyphonic chords that change each time you press the same MIDI key.
- Also using Mstep, send multiple sequencers to different envelopes with different durations for chords with notes of different lengths.
- Set different predelays for each envelope for delay-like effects.
- After editing settings, you may need to stop and start the sequences with the ON button, so that the clock resets and the sequencers are then back in sync with each other.
What if you want to have a sequence transposed each cycle? Then for example:
- Set seq1 to LOOP with 4 steps at 1/1.
- Set seq2 to be triggered by sequencer 1 (1SHOT) with 8 steps at 1/8.
- Using SEQ>P, set seq2 pitch to be modulated by seq1 pitch.
- Set an envelope to use Seq2 output.
What if you want a sequencer pitch pattern with a sequencer velocity pattern of a different length? then set for example:
- An 8-step looping sequence on seq1.
- A 6-step looping sequence on seq2 with the same rate.
- Set velocity the same for all steps on seq1
- Using SEQ>V, modulate seq1 velocity by seq2 velocity.
What if you want a 64-note sequence? then set it up as follows:
- Sequencer 1 & 2: length = 2, rate =4, mode = loop
- Sequencer 3 & 4: length = 32, rate =1/8, mode = 1shot.
If velocity is zero for the first step of sequencer 1, and the second step of sequencer 2, then sequencers 1 and 2 play sequencers 3 & 4 alternately.