Surge XT modules for VCV Rack is a collection of modules which brings the majority of the DSP code from Surge XT into the VCV Rack environment in a modern and carefully designed fashion.
This manual is a collaborative work in progress. We are happy to merge pull requests and changes!
A great starting point if you are impatient is to just watch our beta-day launch video from Omri Cohen. Thanks for making such a great video, Omri, and awesome flute playing!
Surge XT contains a collection of modules which project the core capabilities of the Surge XT synth into VCV Rack. It contains multiple VCOs, multiple FX, a Filter module with a large number of complicated filter modes, a Waveshaper with multiple shaper models, an LFO/Envelope Generator module, and a collection of utility modules.
This manual covers how to use these modules in VCV Rack, but it is intended to be read in conjunction with the Surge XT Manual. Concepts like the meaning of a particular setting in a VCO or a particular knob on an effect are covered there in detail, and we won’t repeat that information here.
The module set strives for a high degree of consistency in the panels, and there are several core concepts which cover nearly every module which you should understand before you turn to the particular modules.
All Surge XT modules share a few basic features, shown in the above annotated image of the Sine VCO and the Flanger. All components in Surge XT support the full set of Rack 2 features, including value tooltips and typeins, using the standard Rack gestures. We can see almost all the core UI features on the screenshot above of the Sine and Flanger modules.
The modules with display area charts will update those charts in realtime based on values and modulations. We endeavour to make sure the charts show what is actually happening in an appropriate fashion!
Surge XT contains an advanced modulation system where every module contains a many-to-many modulation matrix from 4 CV inputs to each of the knobs.
To modulate a value:
The modulation bounds and tooltip on the knob while editing modulation show a bipolar level which is the impact of a + or -10V signal. If you are using a +/-5V modulator (as opposed to a 0-10v modulator) you may need to set your depth higher.
Finally, this modulation gesture is far more natural to just do or see than it is to write about! We strongly suggest you watch Omri’s video or just try the modules if this doesn’t make sense.
All the Surge XT modules are Polyphonic. Polyphony is driven by natural inputs (V/Oct, Trigger, and so on) in each module. Each of the FX (except the Delay, as discussed below) can work either monophonically, summing inputs, or optionally polyphonically, with an instance of the FX per channel.
Modulation inputs do not set polyphony in modules. Instead, a module which has polyphony P will interact with modulation with polyphony M as follows:
Surge XT supports temposynced values across the time-based effects, and we have extended those features to the Surge XT modules. If a module supports tempo-sync values, it has a CLOCK input.
The CLOCK input can take two forms, which you can toggle between in the module menu.
The panel label for the CLOCK input will change based on the mode you select.
We love the way the Surge modules look, but we also know people like picking colors, light and dark modes, and the like. So we added all of that!
On any module you can right click and choose between three skins (light, medium, and dark) and can choose the colors for the panel displays, the knob rings and the modulation gestures. You can also deactivate animation and drawing features on the display.
Bu default, changing a skin or a color changes your global state and all Surge XT modules will follow. If you want, you can also decouple a module from the global state and it will have independent retained colors and skin settings.
Here are some examples of the base skins:
The Surge VST is a menu-driven experience for many controls, and some of the lesser used options in the VST are not on the front panel but are in the module menus per module. We strongly suggest you look at the module menu since it contains a bunch of great features!
By virtue of being a VST, Surge is designed for a block-processing environment as opposed to a per-sample processing environment. This means there are a collection of places where latency can appear or modulators are snapped less frequently than per sample.
Luckily, in the Surge XT modules, we have undertaken the work to make the Surge code base use a compile time variable block size, and for the Rack implementation, set the module block size to 8 samples, greatly improved from the 32 sample condition in the prior rack implementation.
Most of the time, everything will simply work as you think, and you don’t need to worry about block size. There are a few exceptions and considerations, which we’ll come back to where relevant.
The Surge XT collection contains the following VCOs from the Surge oscillator section:
Each oscillator is documented more thoroughly in the Surge XT manual.
The oscillators all have a collection of common features, available on the right mouse menu. Some oscillators have VCO-specific menu items also. Among these options are
The Surge VCOs use a collection of techniques to guarantee low CPU while maintaining high audio quality. But there are some things which can drive the CPU high in VCOs.
In general, the Modern, Twist, and WaveTable CPUs are among our most intensive, and Classic is among the lightest. VCOs increase CPU count roughly linearly in unison count; a unison count of 3 or 5 is almost always as high as you want to go. Larger (higher number of points) wavetables can be more expensive than smaller ones. And finally, of course, higher polyphony means higher CPU usage.
The two surge Wavetable based oscillators ship with the factory section of the Surge XT wavetable bank. These wavetables can be accessed from the display area menu. The 3rd party section has been omitted by default, (to make the library download smaller). You can however easily access our 3rd party wavetables from the wavetable menu, just press “download extra wavetable content”.
The VCOs will also read wavetables in a variety of formats, including the popular wavetable formats used by Serum (2048-long tagged .wav) and Bitwig (.wt). It also interprets WAV loop markers as wavetables.
Wavetables in other formats require pre-processing. Unprocessed audio files will be loaded as one shots. For more on this consult the Surge XT manual.
Since wavedit (with its 256-block untagged wav file) is a popular format, we have added a special menu in the Surge XT Rack modules, where you can load this file directly from the wavetable menu using the “Load WaveEdit Wavetable” menu item.
If you have a wav file which you know is a 512 wide wavetable, you can also load it explicitly with “load untagged wav as” submenu
Finally, on startup surge will scan your surge user directory for additional wavetables, so you can copy or link to those. To reveal the directory where Surge looks, use the “Reveal User Wavetable Directory” entry. This is the same directory the VST uses, so if you have already set up a user wavetable collection, they will appear in your menu.
Surge saves the selected wavetable in the VCV Json Patch, so if you make a patch then remove a table from your system, your patch will still play in the future.
All the Surge VCOs generate samples in blocks of 8, snapping the CV output at the start of the block and smoothing to that value as an end of block target. In almost all music applications this is unnoticable, but there are two consequences
Each VCO has a “Reset” or “Trigger” input depending on its behavior.
If this input is labeled “Reset” resets the oscillator with the same action that happens at note on in the vst. It resets phases for unison, restarts the note drift, and a few other things. If you patch a VCO to a scope module, set unison to 2 and choose “Retrigger with Phase = 0”, you will clearly see the effect of Reset in the scope.
For a few oscillators there are modes other than reset. String, Twist and Window/WaveTable in one shot mode toggle from “Reset” to “Trig” to indicate that the init action restarts playback.
In String it re-fills the burst buffer and resets the modelling delay lines.
In Twist it re-triggers the built in LPG.
In Window/WaveTable in one shot mode it starts the one shot again. This mode is only active if you have loaded a wavetable which acts as a one shot. In this case, on trigger the playback will start from the morph value which is in effect when the trigger arrives.
The Surge XT VCF presents all of the Surge XT filter types and subtypes in a single module. There are preset menus at the top and bottomr of the display to select the core model and sub-type. The subtypes drastically alter the core models behaviors, we strongly encourage you to explore all the combinations.
The module runs in polyphonic stereo with mix, pre- and post- gain, cutoff and resonance controls which all do exactly what you’d expect.
What it doesn’t have is a dedicated V/Oct input. But you can make it pitch tracking by patching a V/Oct signal into a mod input, and assigning it to the frequency dial at full depth. Note that not all the filters play in tune consistently throughout their range, for some of them the tuning will vary with feedback and input level. Some of them play in tune very reliably though. the 24dB Lowpass and the OB-Xd Bandpass and Notch filters are particularly consistent.
The VCF display shows the result of transforming a chirp sweep through the filter as configured. It is the actual filter response calculated in near-realtime.
The surge filters are sample accurate adding no latency, but calculate coefficients every 8 samples and then smooth over the block. This means the filters handle feedback well, but filter FM has the same limitation as audio rate modulation on the VCOs. Can sound great for deep basses, but will easily fall apart in high registers.
The Surge XT Waveshaper presents all the waveshaper models from Surge in a single module. It Using the preset menu at the top of the display, you can choose the waveshaper model to apply.
The module gives you control over bias, which adds DC offset before the waveshape and subtracts it after, making the waveshaping assymetric. There’s also a drive control (pre-gain), optional high- and low-pass filters, and a post gain control.
The Waveshaper display shows the output of the waveshaper, as presently configured, with input of a +/- 5V amplitude sine wave. This is the quickest way to get an overview of the various shape options the module provides.
Unlike the filter and VCOs, the waveshaper module processes both audio and modulation per-sample. This means it’s much better suited for audio rate modulation than the previously discussed modules. The Drive and Bias controls are particularly suitable targets, with very different results depending on which waveshape is selected. The coefficients on the filters are still per-block however, so the filters dials are somewhat less suitable targets, comparable to the VCF.
The Digital Combinator module provides two independent polyphonic circuits which can use a variety of digital signal combination techniques to add texture and growl to a pair of signals. The basic setting ‘Ring Modulator’, upsamples the signal, multiplies a * b digitally, downsamples, and sends it to the output. As a result this module has a latency of 4 samples, the minimum block size for the Surge halfband up/down filters.
The module also features a large number of other combination functions, though, each with a unique and signal dependent character. The best approach is to just try them and see what sounds good!
Finally, the module allows a double-cascade. If the second input “A” input has the power button between the inputs activated, the second circuit will use the output of the first as its input without the cost of an additional up/down sample, allowing for a wide variety of three-signal combinations.
Each of these effects is described in more detail in the Surge XT manual.
All the Surge FX except the Delay can run in either a monophonic or polyphonic mode. In monophonic mode, the FX sum the inputs and hand them to a single instance of the effect. In polyphonic mode, there is an instance of the effect for each polyphonic channel, adding substantial CPU in some cases, but also adding polyphonic separation. All FX default to monophonic mode, except for TreeMonster which defaults to polyphonic.
You can toggle polyphony behavior in the module menu.
Except for the Delay, all the above effects work with a block size of 8, so have to collect 8 samples before processing. As such they add an 8 block latency to input signals, and audio rate mod will cause the aforementioned aliasing issues.
Surge XT for Rack now has two special delay modules which are parameterized for physical modeling applications. They are delays in a DSP sense, but functionally you might as well call them experimental VCOs (though they can also serve as FX).
At the heart of both Tuned Delay modules is a very short delay, which has its length controlled by a V/Oct input such that the delay time is always one cycle at the intended frequency. I.e. if the V/Oct input indicates a frequency of 1000 Hz the delay time will be one millisecond, if it indicates 100 Hz the time will be ten milliseconds etc.
If you add feedback to such a tuned delay, and send it a short burst of sound, it creates a sound somewhat like a plucked string, with the amount of feedback controlling how long the sound takes to decay. This is Karplus-Strong synthesis. But you could also patch a vco to the input and use them
This is the bare-bones version of the idea. It has stereo inputs and outputs, and a V/Oct input. The V/Oct Center parameter acts like the pitch control on a VCO. Type in whole number like 1, 2, -1 etc to change octave, for example.
To use this module, send some sound into the input, mixed with the sound of the output to create a feedback loop (you’ll need a mixer). Adding other modules into that feedback loop can create many kinds of interesting results.
That’s what the Sample Correct control is for. Long story short: Count the number of cables the signal passes through between the output and the feedback input, and make sure this parameter is set to that number.
Why? Every cable in VCV Rack introduces 1 sample of latency, which means if you patch some modules into the feedback loop, the cables will very slightly lengthen the delay time. This would make the module play out-of-tune in high registers, so we put the Sample Offset control in to let you compensate.
The Tuned Delay+ module is the same DSP, with some useful patching tools built-in. You could say the seemingly simpler one is the advanced tool, whereas this one is the more user-friendly version that helps you out a little more.
There are stereo inputs and outputs, and our familiar four modulation inputs.
The V/Oct input, and the Center parameter, are explained above. The Fine L/R parameters do the same thing as Center, but have a much smaller range and work independantly for the left and right channel.
The feedback inputs save you from having to use a second module to mix output back into the input. We recommend starting out simply patching L/R outputs to the L/R feedback inputs. The Level control attenuates the feedback signal, effectively controlling both the decay time and timbre of the sound. By default the control goes from -1dB to 0dB, where the most sensitive range is. If you want to be able to bring the feedback down to silence though, you can press the plus sign over the dial.
There are optional high- and low-pass filters in the feedback path to shape the sound further. These filters track V/Oct, the dials control the offset from the root frequency. The wet/dry control blends filtered and unfiltered feedback.
The exciter input directly applies a 0-10v CV to the amplitude of an internal noise generator, sent into the delays feedback path. If you’ve got output patched into the feedback as described above, you can send trigs to the exciter port to play the module. The length of the trig will greatly impact the sounds you get.
This is the essential way to patch Tuned Delay+ as a Karplus-Strong VCO. V/Oct, trig to Exciter, and Output to Feedback. Just like with the simple Tuned Delay, the Correct parameter should be set to 1 in that scenario. For each module you add to the feedback path, turn Correct up by 1.
Our delay line processes per-sample. So these will not introduce any (additional) latency to signals. This also makes parameters that directly control the delay time good targets for audio-rate modulations. Just like with the Waveshaper, the filters in the Tuned Delay+ feedback path calculate per block and will alias at high audio rates.
The LFOxEG module is built around the main modulator type in the Surge VST. It is an LFO with various shapes including two random modes and a step sequencer. The amplitude of its output is scaled by a DAHDSR envelope generator.
The Surge XT manual has some more info on each LFO shape, though the display of the module itself will most likely tell you what you want to know. The straight lines above and below the LFO wave display are showing you the how the envelope influences the LFO wave output. The envelope also influences the output of the Step Sequencer type, though this is not shown on the display.
The controls are mostly self-explanatory, and their effects are also shown on the display area. The Deform control has different effects depending on the selected LFO type, and some of the types have different Deform options, accessible via the module menu. Deform only affects LFO and LFOxEG outputs, never the EG output (even in the envelope type).
There is a switch in the bottom left of the display area for the output polarity. In the default mode, LFO output range is +/- 5V. In Unipolar mode, its range is 0V-10V. The step sequencer type and the EG output are an exception. They never go to negative voltages. Their range is 0v-5V by default, and 0v-10V in unipolar mode.
There’s also some end of cycle-type outputs, which send a trig at the end of various internal events.
The Gate and GateEnv both open up the EG. The difference is that the Gate also resets the LFO phase, while the GateEnv does not. We do not currently recommend patching both of these at the same time.
Clock will take a clock input to tempo-sync the module. By default, the LFO will sync to clock when connected, but the EG will not. You can change that, and also choose clock signal types in the menu.
The Phase input will stop the LFO from cycling, and let you control the position in the LFO wave directly with a 0-10v input.
There are a number of menu options.
When making voices in VCV Rack, you typically use an envelope generator plus a VCA to control amplitude. This module combines both in one, with stereo inputs/outputs and a pan control!
The envelope can either be a typical ADSR (suitable for sustained synth voices) or a less common DAHD (suitable for drums). Toggle between these in the top left of the display.
The envelope segments can be adjusted for many different kinds of response. The envelope sliders are labelled and self-explanatory. At the top of the display area, you can change the curve of each segment between faster, slower, and standard curves. Like the Surge VST amp and filter envelopes, this EG can also be toggled between digital and analog modes, which have different curve behaviors. There’s also the Response parameter, which subtly changes the curve shapes to tame or exaggerate pops and clicks.
The pan control will work for both mono and stereo inputs. And since the module is polyphonic, voices can be panned independantly with modulation.
Like the LFOxEG module, this one has clock signal options (for tempo-sync of envelope segments) and retrigger options in the menu. We also have two Pan behaviors for stereo inputs.
Four envelope generators in one module, perfect for percussive sounds!
The EG can be either attack-decay or attack-(sustain)-release. In either case you get the same three curve options and analog/digital modes you had in the EGxVCA. Also, like our other EGs it has retrigger from zero/current options in the menu.
Each EG gets an independant trig/gate input, and attack/release time controls.
Make sure to try out the buttons in between the trig inputs. They allow you to link the end of cycle from each EG to the attack of one of its neighbors, so you can chain the EGs into a longer cycle.
The Quad LFO combines four identical simple LFOs, which interact with one another in one of five ways. Each LFO has the same types as the LFOxEG module available (minus the envelope and sequencer types), which can be either unipolar or bipolar. There’s also a new mode called Random Trigger, which has a chance to choose a new random value every trigger/cycle. The deform parameter controls the chance that the output value changes.
Besides the 4 modulation inputs and outputs, it has 4 variable inputs that change behavior depending on the inter-operation mode.
The modes are:
All the inter-operation modes except Independent have a Reset trig input to start the cycle over from the beginning, and a clock input for tempo sync. There’s also a freeze input, which stops all LFOs in their tracks when it receives a high gate. Last but not least, you can reverse the pattern with a trig to the Reverse input.
The module is polyphonic, by default the poly count on the Reset input.
These modules process modulation input per-block. The envelopes respond to triggers in a sample accurate manner though, so no latency there.
We have two mixer modules. One is intended for audio signals, the other for modulation, though you can do it “wrong” if you like.
The Rack Mixer is an implementation of the VST mixer section. It contains
There is a version with knobs, and a version with sliders. They do the same thing, just different face plates.
The unison module allows non-Surge VCOs to participate in surge unison. It does this by providing a function which converts a polyphonic v/oct signal into an expanded polyphonic v/oct signal, and then by collecting and mixing resulting higher-polyphony audio signals into a stereo field. It has an expander allowing you to route CV along the same polyphony-expansion path, sports a low and high pass filter, and provides drift and character effects from the Surge VCOs.
Patching the module requires some care. The simplest case is taking a monophonic v/oct in, which then generates a N-voice polyphonic v/oct out. Patch that to your favorite poly VCO, take the audio output from that VCO back into the unison module audio in, and you will get a stereo unison.
As voice count increases you may need extra VCOs. The module supports up to 4 subordinate VCOs, allowing up to 64 unison voices, so can add 4-voice unison to 16-way polyphony or up to 9-voice unison with 7 voice polyphony if all the VCOs are connected.
To see a demonstration of the unison module just before we shipped 2.2, we prepared this development preview. A complete wiring, used to make two BogAudio PWM VCOs participate in polyphonic unison with a PWM sweep, is shown here.
We think the Surge modulation matrix model is really great! And it would be great if we could extend it to other modules. In order to do that, we include a mod matrix module which is simply a collection of knobs which output fixed voltage to the associated modulation output. Since these knobs are modulation targets, you can use them to generate 8 re-mixed modulations from 4 modulation sources to route to other CV sources.
Patch output 1 to the destination you want to modulate. Then bring the modulation sources you want to use into the mod inputs. Then arm the modulators and assign them to knob 1 one by one. The opt/alt + 1,2,3,4 shortcuts come in handy here for adjusting the amount of each modulator that goes into the mix.
These are per-sample throughout, no latency or aliasing from audio-rate signals.