cadmium manual

Version 1.0
William Light
Alex Hauptmann
October 2018
cadmium 1.0 user interface

Introduction

Hey, welcome to the Cadmium manual!

Cadmium is a 3-carrier, 2-modulator vector phase-shaping synthesizer with a four-pole ladder filter, several distortions, 3 LFOs, and 3 envelopes. Vector phase-shaping is a relatively novel form of phase distortion synthesis, but fear not – we’re going to dive into it and have you making wild sounds in no time at all.

If you run into any trouble, don’t hesitate to reach out to us at support@lhiaudio.com.

Installation

The Cadmium demo and full versions are distributed as separate binaries – rather than entering license information in the demo version to “unlock” the full version, you’ll instead download the full version from your purchase confirmation email and then replace the plugin object (.dll, .vst, or .so) from the demo with the one from the full version.

Both the demo and the full versions of Cadmium are delivered as archives (.zip for the full versions and the Windows demos, and .tar.gz for the MacOS and Linux demos).

On Windows, copy the cadmium.dll file to wherever you keep your other VST2 plugins.

On MacOS, copy cadmium.vst to /Library/Audio/Plug-Ins/VST.

On Linux, copy cadmium.so to wherever you keep your other Linux native VST2 plugins. Note that you may need to install additional XCB dependencies – Cadmium currently depends on xcb, xcb-xkb, xcb-icccm, xcb-cursor, xkbfile, and xkbcommon.

Controls and Gestures

Knobs

knob demo

Knobs are the primary controls for adjusting values. They come in a few sizes, but the gestures are all the same:

  • Click and drag vertically
    to change value
  • Shift + Click and drag vertically
    for fine adjust
  • Scroll wheel
    to change value
  • Shift + Scroll wheel
    for fine adjust
  • Double-click
    to reset to default
  • Drag-and-drop + Control
    (or Drag-and-drop + Option on mac) to another knob to copy the value

Spinboxes

spinbox demo

Spinboxes are used for selecting between lists of discrete numeric values, used primarily in the oscillator transpose controls.

  • Click and drag vertically
    to change value
  • Double-click
    to reset to default

Modulation Sources

modulation source demo

Modulation slots are labels outlined with thin borders which represent a routable control signal.

  • Drag and drop to a modulation slot
    to establish a modulation routing

Modulation Slots

modulation slot demo

Modulation slots are solid rectangles to the right of other parameters. They represent a modulation mapping between a modulation source and a parameter. The gestures are similar to those for the knobs.

  • Click and drag vertically
    to change value
  • Shift + Click and drag vertically
    for fine adjust
  • Scroll wheel
    to change value
  • Shift + Scroll wheel
    for fine adjust
  • Double-click
    to reset to default
  • Right-click
    (or Control + Click on Mac) to clear the modulation mapping
  • Drag-and-drop + Control
    (or Drag-and-drop + Option on Mac) to another modulation slot to copy the mapping and depth

Preset/Patch Management

With the exception of the below-mentioned copy/paste functionality, Cadmium 1.0 handles all preset management through your VST host.

In Ableton, the factory bank can be browsed from the drop-down chooser on the VST wrapper device in device view. To manage your own presets, use the “Save” and “Load” buttons adjacent to the drop-down preset chooser.

In FL Studio, the factory bank can be browsed either from the plugin wrapper menu (with “Browse Presets”) or with the controls in the top-right of the plugin wrapper window. To manage your own presets, either use the “Save preset as…” function from the plugin menu or the “Load”/“Save” buttons in the VST Wrapper Settings.

Copy/Paste

patch copy/paste buttons

These two buttons provide a straightforward, simple method of patch sharing. “copy patch” takes the current state of Cadmium and copies it to your system clipboard in a plain-text format, and “paste patch” loads the contents of your system clipboard as a patch. Since the patch format is plain text, you can easily share patches by pasting them into forum posts or messengers.

For the technically minded: Cadmium’s patch format is JSON, and can be freely edited. On load, Cadmium validates and clamps the parameter values, so don’t worry about parameters being out of range.

Audio Path

cadmium signal routing diagram
cadmium signal routing diagram

Cadmium has a relatively linear signal path with a few small tweaks. In particular, we added DC blocking filters at strategic places – one right after the oscillators (due to the tendency for phase distortion to introduce DC offset) and one right after the global distortion (due to its asymmetric nature also easily adding DC offset).

Also of note is the “split” envelope around the voice saturator. The attack, decay, and sustain phases of the envelope are applied before the voice saturator so that the envelope drives into the saturator, and the release is applied after the saturator to prevent a click at the end of the release phase.

VPS (Vector Phase-Shaping)

vector phase shaping panel

The main course. The pièce de résistance.

Vector phase-shaping.

VPS is an extended and improved form of phase distortion which provides a flexible way to morph and warp the phase of oscillators. During development, we explored a number of different arrangements for VPS modulation and determined that audio-rate modulation provided the widest and most interesting variety of sounds.

Due to the fact that the phase-shaping is modulated at audio rate, there are timbral similarities to both phase modulation (PM) and frequency modulation (FM). However, unlike both PM and FM, the phases of the carrier and modulator oscillators have significant bearing on the synthesized timbre, and changes in phase can have dramatic effects.

To get a feel for VPS, we recommend you give the following a try:

  1. Load Cadmium into your DAW of choice and loop some MIDI input.

    It will be easiest to get a feel for the next few steps while just playing a single note.

  2. Load the “initialise” preset from the factory bank.

    The init patch has only one carrier oscillator active and moderate-to-mild VPS settings dialled in.

  3. In the “osc1” panel, sweep through the “phase” knob.

  4. In the “VPS” panel, now sweep through the phases of both X and Y oscillators in turn.

    The changes in sound and waveform are due to the phase offset between the two modulators and the carrier. Hence, modulating or automating these phase offsets is a great way to get variations.

  5. In the “VPS” panel, gradually detune the X oscillator. Notice how, in addition to the expected sound of the detuned oscillator, the oscillator is also now gradually falling into and out of phase with the Y oscillator and the osc1 carrier, and as a result the phase offset is changing. Small detunes are a great way to build slowly drifting and morphing sounds, while heavy detunes are great for classic jungle-style basses.

  6. In the “VPS” panel, transpose one of the modulator oscillators down one or two octaves for a thick, heavy bass sound. Transpose your MIDI input up an octave or two as necessary.

Shape

vector phase shaping panel: shape controls

These parameters control the overall shape of the curve (that is, they affect both modulator oscillators). Their effect on a timbre may not always be obvious (or expected), so we recommend experimenting with them to see where they take you.

  • span

    Controls the “completeness” of the curve.

    Higher values result in a more harmonically rich sound. Lower values result in a reduced magnitude of the modulators, and thus their effect on the sound will not be as pronounced.

  • theta
    Phase offset of X relative to Y.
  • smooth

    With many combinations of shaping parameters, the curve will become discontinuous – that is, it doesn’t start in the same place as it ends.

    While this adds some nice, bright harmonics, sometimes it can be too harsh, so this “smooth” control adds a short windowing to both axes which rounds off this sharp edge. Since it does change the shape of the curve slightly, it won’t always roll off the harmonics while leaving the sound perfectly intact, but in many cases works well.

Modulation Oscillators

vector phase shaping panel: oscillator controls

These parameters control the shape and tuning of the individual modulator oscillators separately.

  • span

    Phase multiplier.

    Higher values extend the phase of the modulator into additional sine wave cycles and hence add harmonics.

    Note that, since this parameter purposely allows for fractional cycles, it’s very easy to add sawtooth-like discontinuities (especially in conjunction with the below-mentioned phase parameter). These discontinuities add plenty of even and odd harmonics, but if you would prefer to attenuate them, please refer to the “smooth” parameter in the above shape section.

  • oct | st | c

    Transpose in octaves, semitones, and cents (respectively).

    Especially for the modulator oscillators, transposition has a huge effect on the resulting sound. In addition to the expected result of detuning a modulator, it also causes the oscillator to fall in and out of phase relative to the other oscillators, and hence also has the effect of sweeping through the phase offset.

    To get a feel for this, load the “initialise” preset from the factory bank and detune either the X or Y oscillators just slightly by turning the cents knob and then play a note.

  • phase

    Phase offset.

    Since phase plays such a big part in the shaping function applied to the carrier oscillators, sweeping through the phase offsets is an easy way to discover (sometimes extreme) timbral variations.

Carrier Oscillators

vector phase shaping panel

Cadmium has three sinusoid carrier oscillators each with independent VPS modulation.

In the tradition of phase distortion, the waveform is a cosine when phase is 0% (0 degrees), and therefore is a sine at 75% (270 degrees).

  • level

    Volume of the oscillator.

    Currently not modulatable, but will be in the future.

  • oct | st | c

    Transpose in octaves, semitones, and cents (respectively).

    As mentioned above in the VPS section, detuning can (and usually does) result significant effects on the timbre of the sound. With VPS modulation turned up on a carrier oscillator, transposing the oscillator will result in a pitch differential and beats from both VPS oscillators.

    Modulation range is set with the “mod st” parameter in the voicing panel.

  • phase

    Phase offset.

    Because this phase offset is applied before the VPS modulation, phase offsets can (and usually do) result in significant changes to the sound with an oscillator’s VPS modulation turned up.

  • stereo

    Phase offset of the stereo oscillator channel.

    Which channel is “the stereo oscillator channel” depends on the selected stereo mode:

  • LR

    In traditional left/right stereo mode, the stereo phase offset will be applied to the right channel.

    This mode is good for dramatic stereo width, and the result typically collapses to mono well, but, in bass sounds, it can result in low-frequency content which is out of phase between the stereo channels.

  • MS

    In mid/side mode, the stereo phase offset will be applied to the side channel.

    This mode is also great for stereo width, but without localising the sounds to either stereo channel. It’s also great for bass sounds, where no low frequencies will be out of stereo phase.

  • skronk
    Extends the oscillator phase into additional cycles of the sine wave. This creates a faux-resonance effect at low VPS values and additional (in)harmonics at high VPS values.
  • vps

    Controls the amount of vector phase-shaping modulation routed from the VPS panel.

Filter

vector phase shaping panel

Cadmium’s filter is a multi-mode ladder with internal saturation. While it’s not based on any specific circuit, we did our best to give it a smooth character to complement the digital edge of the oscillators.

The following responses are available:

  • none

    Bypasses the filter entirely.

  • lp24

    4 pole Lowpass

  • lp12

    2 pole Lowpass

  • bp24

    4 pole Bandpass

  • hp24

    4 pole Highpass

The standard filter controls are all present and accounted for, and all of them are modulatable at audio rate.

  • cutoff
    Corner frequency of the filter.
  • res

    Resonance (emphasis/boost at the corner frequency).

  • drive

    Additional gain applied to incoming signal.

    At high levels, this will dramatically change the character of the resonance.

Voice Saturator

vector phase shaping panel

A simple soft-saturation with dc offset and one-sample feedback. Good for a little bit of extra dirt on the filter.

As mentioned on the signal flow diagram, this saturator is applied after the attack/decay/sustain phases of env1 and before the release phase. Hence, the amp envelope drives into the saturator harder in the attack, decay, and sustain phases, and the timbre of the saturation will stay constant through the sustain and release of the envelope.

  • offset

    Pre-saturation DC offset.

    Though symmetric soft saturation only adds odd harmonics, introducing a constant DC offset makes the input signal asymmetric and hence also adds even harmonics.

    Its effect is heavily dependent on the input signal.

  • fb

    One-sample feedback.

    Its effect is subtle, but, in general, negative feedback rolls off the highs and positive feedback accentuates them.

  • drive

    Additional gain applied to the input before saturation.

    Don’t overcook it.

  • mix

    Wet/dry.

    0% is fully dry, 100% is fully wet.

Global Distortion

vector phase shaping panel

The global distortion is an asymmetric nonlinearity with several feedback paths for a spicier sound. Each stereo channel has two nonlinearities arranged in a push-pull topology.

  • skew

    Additional distortion asymmetry, similar to the voice saturator’s “offset” parameter.

    Since the global distortion is already asymmetric, the effect here won’t be as pronounced.

  • slope

    Program dependent waveshaper steepness.

    At 0%, the waveshaper will be static, and at increasing levels, a feedback path from the output of the saturator will control the slope of the waveshaper curve. This has an effect similar to increasing drive, but with a different character (especially in “steezy” mode).

  • drive
    Additional gain applied to the input before distortion.
  • mix

    Wet/dry.

    0% is fully dry, 100% is fully wet.

    Note that this is not a true wet/dry control. While 0% bypasses the distortion completely, values up to and including 100% result in a more subtle mix of the distorted signal. This is due to the feedback paths being taken from after the wet/dry mix.

    We’ve found that this particular topology is great for mixing in just a bit of distortion with moderate slope and drive and low-to-moderate mix. Really spices up the highs.

During research and development, we narrowed down a few different variations of this algorithm and selected our two personal favourites:

  • gnarly
    Classic distortion with a particular midrange accentuation. Versatile and crunchy.
  • steezy

    A less predictable distortion that has a tendency to scoop out the midrange somewhat. Has a tendency to “break up” on some inputs in a very interesting way.

    Highly recommended on basses.

Output

vector phase shaping panel

In Cadmium 1.0, env1 and velocity (linearly scaled) are hard-wired to the voice amplifier. This will be broken out into its own control with configurable modulation in later versions.

  • level
    Master output level.
  • uncertainty

    A “fake analog” knob which is gradually expanding in scope with regards to what it actually does.

    Currently, adds a random-walk pitch drift to the oscillators and a subtle amount of additional grit to the filter. The idea is to gradually wire more pieces of the audio path into this knob to simulate varying component tolerances and sources of low-level noise, but this is an ongoing project and concept.

Behaviour

Voicing

voicing panel
  • oct | st | c

    Global transpose with per-voice modulation slots.

    Modulation range is set with the “mod st” parameter.

  • bend st
    Pitchbend range in semitones.
  • mod st
    Sets the range of all transpose/pitch modulation in the current patch, and is saved with the patch.

Polyphony

polyphony panel
  • mono

    Monophonic (only the most recently played note sounds) with portamento between all notes.

    After the last held note is released, if another note is played while the voice is in its release phase, the oscillators won’t reset their phases like they would otherwise. This is to avoid clicks or pops from the abrupt phase changes.

  • legato
    Same as “mono”, but with portamento only between notes played simultaneously.
  • poly
    Polyphonic (all held notes sound), with the maximum number of voices set with the “max poly” control.
  • poly glide

    Same as “poly”, but will match notes together in the order they were released and then played to glide between them.

    For example, when playing the chord C4 G4 D5 and releasing them in ascending order (C4, then G4, then D5), then playing the chord G#3 D#4 A#4 (in that order), the low, middle, and high notes will glide into each other as expected. If, instead, the second chord is played in the order A#4 D#4 G#3, the C4 will glide to the A#4 and the D5 will glide to the G#3 (effectively inverting the high and low notes of the chord).

  • max poly

    Maximum notes that can be played at one time. If CPU usage becomes too high, reducing this can help. Cadmium’s voice stealing algorithm will preferentially reuse voices that were released least recently.

  • glide
    Time to glide between notes in mono, legato, and poly glide modes.

Modulation

Envelopes

polyphony panel

These are standard ADSR envelopes with few surprises in store. They are loosely modelled after the behaviour of real analog envelopes but have been tweaked and calibrated as necessary.

One modulation source is provided per envelope.

LFOs

Despite the “Low” in “Low Frequency Oscillator”, Cadmium’s LFOs will happily sweep up into the kHz range. The LFO speeds can be controlled with two distinct modes: note and frequency (hz).

Host beat-sync mode is planned and in development.

There are several common controls between these modes:

  • phase

    Phase offset of the LFO.

    At high frequencies this doesn’t have much of an effect, but for lower-frequency rhythmic modulation this can be very useful.

  • smooth

    Applies a variable filtering to the LFO output. The effect is similar to lowpass filtering but is implemented by a variable bandlimiting function in the synthesis of the waveform

    Note that this is only applicable for the saw and square outputs. Sine is already as smooth as it’s going to get.

    This will make the saw gradually approach (but not become) a smoothed triangle-like shape, and it will change the discontinuities in the square into smooth ramps. This is particularly noticeable at low frequencies, and at high frequencies serves to temper harmonics introduced by the modulation.

The LFOs each provide three modulation sources: one each for sine, saw, and square.

Note Mode

polyphony panel

In this mode, the LFO is just another audio-rate oscillator tuned to the note pitch. It’s particularly nice to use this mode for modulating the filter cutoff.

  • oct | st | c

    Transpose in octaves, semitones, and cents (respectively).

    Try going up several octaves for tuned rate-reduction type effects!

Frequency Mode

polyphony panel

This mode provides direct control over the frequency of the LFO.

  • hz

    Frequency of the LFO in hertz.

    Goes from 0.01hz to 6kHz.

Epilogue & Thanks

Developing an audio plugin from scratch is a serious undertaking, and I wouldn’t have been able to do it without the help and support of a lot of folks over the years.

So, without further ado, thanks –

For the moral & technical support:

  • Alex Osaki
  • R. Kevin Nelson
  • Avery Genetti
  • Paul Marrapese
  • Kris Slyka
  • Harry van Haaren
  • Patrick Ellis
  • Juho Hietala
  • Christian Walde
  • Urs Heckmann
  • Robert Randolph
  • trip- from #musicdsp
  • Chris Randall
  • Peter Kirn
  • Randy Jones
  • Brian Crabtree
  • subsignal & kerrang from #edmproduction
  • 2Edit
  • Floris Klinkert
  • Frederik Slijkerman
  • Andrew Humphrey
  • Bobby West
  • Dan Taylor
  • Ben Hayman
  • Mark McCurry
  • Robin Gareus
  • Filipe Coelho
  • David Robillard
  • Boz Millar
  • Bill Humm
  • Fronx Wurmus
  • Tiffany Conroy
  • and Mark & Joni Light

For the name (and the moral & technical support):

  • Jessie Quale

For the work and paper on VPS synthesis:

  • Jari Kleimola
  • Victor Lazzarini
  • Joseph Timoney
  • and Vesa Välimäki

For the presets:

  • ERC
    Erconomics
  • KL
    Kristian Lindgren
  • PM
    Paul Marrapese
  • LXH
    Alex Hauptmann
  • KTR
    KØTER

And to you, the person who made it all the way to the bottom of the manual. Thanks for reading, and I hope you enjoy Cadmium.

Happy tweaking,
-w