Wings

A synth for doubling tracks that lift a source upwards and outwards. Two oscillators, one ladder filter, eight voices, and a drift that comes from 1/f noise rather than LFOs. It learns the source once from the side chain and then sits the double under it: a high-pass at the source's floor, a cut in its core band, an attack a little slower than the source's, and a level a set number of LU below it.

Wings window

In my words

I have plenty of great sounding synths, so this was not about something new. I wanted a lightweight one with an analogue feel, and I kept reaching for a heavy synth just to add some width or body in a chorus, or to make a lead more prominent. A double like that is a copy of the MIDI and two seconds of work. The time goes into making it sit, keeping it out of the lead's bottom end, out of its core, and out of phase trouble, so the mix does not go muddy. I wanted those steps taken care of. It works as a synth on its own, but it is built as much for doubling.

Where it goes

On its own software instrument track, playing its own MIDI. A double gets its MIDI changed for movement, so Wings is not driven from the source. The source (a lead vocal, a guitar, a synth line) goes to the side chain, in Logic's plugin header, only for the learn. One source per learn. For several sources, route a bus to the side chain.

Not for bass or sub. Sub Bass does that.

Controls

ControlWhat it does
Osc 1 and 2: WAVESaw, pulse or triangle. Band-limited, free-running: nothing resets when a note starts, so each note begins where the oscillator happens to be, as on a real one.
WIDTH5 to 95 %, default 50. The pulse width, one per oscillator. Only the pulse uses it.
LEVEL0 to 100 % per oscillator. Both at 100 sit 6 dB under full scale before the drive.
INTERVALOsc 2 at 0, +7, +12 or +19 semitones from osc 1, default +12.
FINEOsc 2 detuned -50 to +50 cents, default 0. A few cents against osc 1 gives the slow beating of two oscillators.
SYNCHard sync: osc 2 restarts every time osc 1 completes a cycle. The pitch is osc 1's; INTERVAL and FINE then shape the tone.
DRIVE0 to 10, default 1. Up to +24 dB into a soft saturation before the filter, with most of the gain taken back after it.
CUTOFF20 Hz to 20 kHz, default 2.5 kHz. The ladder filter.
RESONANCE0 to 100 %, default 20. The top of the range self-oscillates; a saturation in the loop keeps it bounded and musical.
SLOPE4-pole (24 dB/oct, default) or 2-pole (12 dB/oct, from the filter's second stage with the resonance loop still around all four).
KEY TRACK0 to 100 %, default 50. How much the cutoff follows the note, neutral at C3.
ENV-100 to +100 %, default 40. How far the filter envelope moves the cutoff, six octaves at full.
Filter and amp ATTACK, DECAY, SUSTAIN, RELEASERC curves. The attack bends into its top and arrives at the attack time; decay and release are exponential and within 5 % of the way at their time. Attack 0.5 to 5000 ms, decay and release 1 to 5000 ms.
VOICESPOLY (eight voices, default), MONO (each note retriggers the envelopes) or LEGATO (overlapping notes do not retrigger). In MONO and LEGATO, releasing the top note returns to a note still held.
GLIDE0 to 1000 ms, default 60. The slide between notes in MONO and LEGATO, constant time.
VIBRATO0 to 100 %, default 30. The depth with the mod wheel fully up, at 5.4 Hz. The only periodic modulation in the plugin. The pitch wheel bends two semitones each way.
DRIFT0 to 100 %, default 50. How much everything wanders: pitch, pulse width, cutoff, and from note to note the envelope times and the level. At 100 the pitch moves about 3.5 cents either way, slowly.
TOLERANCE0 to 100 %, default 50. How far apart the eight voices are built: cutoff, tuning, envelope times and level, fixed per voice from the moment the plugin loads. DRIFT and TOLERANCE both at 0 is a clean synth.
LEARNPress at the start of the section, play it, press again at the end. It stops by itself after 40 s. Silence between phrases is left out, so it does not bias the result. RE-LEARN replaces the learn and keeps the previous one.
FITOn by default. Off plays the plain synth at the loudness the fitted output had, so the A/B compares tone, not level.
PREVIOUSSwitches to the learn before the last one, for A/B.
AMOUNT0 to 100 %, default 100. Scales the high-pass frequency (from 20 Hz up to the learned floor), the cut, the attack floor and the narrowing.
DISTANCE-24 to 0 LU, default -6. How far under the source the double sits.
BYPASSMutes. An instrument has no input to pass through.
OUTPUT-24 to +12 dB, default 0.

The display

The learned source's spectrum in grey against the double's in amber, live. The dashed line is the floor: everything to its left is cut. The box over the core band shows the cut and its depth. The line above says what was learned: how long, the floor, the core band, how wide the source is, its attack and its loudness. The panel on the right lists what the fit applies now, including the level trim, the attack floor and the mono-sum loss of the double (the width risk, in dB). TO SOURCE under the loudness panel is the double's short-term loudness against the learned source, in LU.

Working with it

  1. Pick a program. Each one is a doubling role: Octave Shimmer, Wide Saw Bed, Pulse Halo, Soft Fifth, and so on, for country, EDM, pop and atmospheric work.
  2. Put the source on the side chain, start the section, press LEARN, press it again at the end.
  3. Play the double's part. With FIT on it sits under the source at DISTANCE. Turn AMOUNT down if it sits too far back. Switch FIT off to hear what it does at the same loudness.
  4. DRIFT and TOLERANCE set how alive it is. Around 30 % for a tight double, 80 for a bed.
  5. If the source changes, RE-LEARN. PREVIOUS compares the two learns.

Under the hood

The oscillators are band-limited with PolyBLEP, the triangle as the integral of the corrected pulse. Hard sync resets osc 2 at osc 1's wrap and corrects that step the same way. A DC blocker sits before the drive. The whole voice runs at twice the sample rate and a half-band filter brings it down, 15 samples of latency, reported to Logic.

The filter is a zero-delay-feedback transistor ladder: four one-pole stages with the loop solved each sample and a tanh on the feedback. Half of the bass lost at high resonance is put back.

Each voice has a left and a right channel with their own oscillators, filter and drift sources. A drift source is pink noise through a low-pass at 0.35 Hz, so most of the movement is below 1 Hz, with a trace of faster jitter of a tenth of a cent on top. A global set of sources is shared by every voice, the thermal part; the rest is each voice's own, and the two channels have separate sources, so they drift apart slowly. That decorrelation is where the width comes from. Osc 2 drifts on its own source, and the cutoff on a third. At each note the envelope times move a few percent and the level a fraction of a dB.

LEARN measures the side chain in 4096-sample frames, mid and side, per twelfth of an octave from 30 Hz to 16 kHz, with each frame's level. Frames below -50 dBFS or more than 30 dB under the loudest are dropped. The floor is the lowest band within 30 dB of the peak; the core is the region within 6 dB of the peak of the spectrum tilted up by 3 dB per octave, since music falls with frequency and an untilted peak is always the bottom, held to between a third and one and a half octaves. The attack is the median rise from 10 to 90 % over the onsets, the level the integrated loudness, the width the side's power against the mid; above -6 dB the source counts as wide.

FIT is three bands of the per-band Mid/Side EQ the EQ plugin uses: a 24 dB/oct high-pass at the floor, a cut-only bell on the mid at the core's centre with its Q from the core's width, as deep as the core stands out over the rest, capped at 6 dB, and the same bell on the side at 30 % of the depth, so the sides are kept. When the source is already wide the logic flips: the side takes the full cut, the mid 30 %, and the double's side is scaled to 40 % so it goes centre and narrow. The amp attack is held to at least 1.3 times the source's plus 3 ms, so the source keeps the transient. The level trim measures the fitted double while it sounds and moves slowly to put it DISTANCE under the learned level. The fit sits after the filter and the drift and never follows them.

Every number that is a matter of taste is in one header in the source, so it can be tuned by ear.

Loudness meter, level-matched bypass and mono handling work the same in every plugin. Common to all plugins