Making "The Doom Instrument"

There’s been a million videos on it already, the weird “instrument” Mick Gordon created for the DOOM soundtracks based on parallel processing of sub-bass sine waves.

Vital doesn’t allow parallel processing, really (just a little) but using mix knobs and multiple identical oscillators, you can get pretty far.

I especially had fun using an inverted envelope to modulate a resonating flanger shoved way up into the high end to get an automatic “feedback in the silence” effect. I also accidentally created the “noise fluttering feedback” effect. Overall, pretty happy with it!

Mars Base.vital (1.2 MB)

I don’t know what the word would be for this kind of “synthesis” (waveshaping synthesis? I mean it’s basically all distortion-driven) but it’s loads of fun to do.

EDIT: Listening to the exported MP3, I don’t get the noise flutter in the final bars! Just a sort of grinding. It seems like that effect is actually the result of runtime artifacts from trying to manipulate a flanger value at audio rate, which Vital doesn’t like! Shame, that effect is really nice listening from my chair. I’ll have to see if I can figure out how to achieve it intentionally rather than accidentally

5 Likes

Updated patch with ACTUAL flutter not caused by breaking Vital (and a couple new tone parameters), updated demo track because it’s DOOM and it needs guitars.

Mars Base.vital (1.2 MB)

(Guitars by Shreddage Hydra, not Vital, sadly)

5 Likes

This is dope! I’ve been doing lots of experiments with the DOOM sound as well, and I’ve used the inverted envelope on the flanger to great results, too. Instant tunable feedback!

I’ll take a look at your preset when I get in the studio later and compare it to mine, I think we’re both onto some similar things and I’m curious to see your approach and if there’s anything I can draw from it to improve my own versions.

One thing that has works really well for me is using the note random function to control the level of the noise ring modulation, and then a macro to control the level of that signal so I can adjust the level of noise added.

Also, after doing a buttload of hardware analysis on the KV100 pedal Mick mentioned in the GDC talk, I’ve managed to work out (with help from some folks on the lovely Argent Metal discord server) that the “pulser” circuit in the KV100 is a monostable multivibrator.

Basically, it outputs a fixed pulse width timed to the frequency of the input. In Vital, while you can’t really mimic the noise a polyphonic input signal would create or fix the width of the “on” part of the pulse and adjust the timing of the tail due to differences in the way the circuit operates vs. Vital’s LFOs, you can set up an LFO as a pulse shape with keytracking and use that to modulate other parameters.

Once I’m at my desk I’ll upload a basic preset with that idea in case it’s coming off a bit confusing. Rip and tear!

Actually, you CAN do this! Well, you can’t mimic the difficulty in pitch-tracking a polyphonic signal (though as I recall he was basically using monophonic sine waves to drive it, or POSSIBLY 5ths/octaves, but that still just creates periodic waveforms at those intervals, assuming it’s tracking upward zero-crossings to pitch detect). But you can do the “fixed width pulse”! I didn’t realize it was wanted or needed.

I explored this a little bit in my ‘graintable’ patch, but all you have to do is draw a tiny pulse waveform and put the spectral morph in “vocode” mode. What this does is plays back the waveform at a fixed pitch (I think it’s the C5 pitch, offset by whatever semitone shifts you have; it behaves like you told the oscillator not to pitch track) but changes the spacing of the “window” it occupies so that the spacing of that window conforms to a specifc number of “windows per second” (i.e. cycles per second). On a pulse which is mostly identical at the end, this will give you the effect you want.

You can actually use this (which I’ve always heard called an “impulse train”) for some physical modeling stuff too, when you want to use cyclic pulses to excite a resonator.

Absolute genius, I’m going to have to experiment with this. I’ve been looking for a way to emulate the KV100 pulser as an effect, too, so this may be an easier way to get that effect either through MIDI triggering or with an audio to midi plugin driving it. Could be useful for other modular instruments like Voltage Modular or VCV.

Also, I think I misspoke about polyphonic input when I meant complex frequencies, so let me walk it back a bit. It’s a complex idea, so bear with me.

A monostable multivibrator works by alternating between a stable (off) state and an unstable (on) state, with the duration of the unstable state making the pulse output. Pulse width isn’t determined by the input at all, but by a separate timing circuit with a potentiometer to adjust the width.

The basic circuit is a transistor pair acting as switches with a resistor capacitor timing circuit controlling the width. The Metasonix KV100 (and the TM-1 this circuit comes from) uses a dual triode, so the circuit function is the same but the edges of the pulse are a bit dirtier due to tube characteristics, so a perfectly on/off pulse ends up sounding too digital.

In operation, the input signal acts as a trigger input; when it crosses the threshold, it turns one half of the triode “on”, triggering the unstable state. While the circuit is in the unstable state where the pulse output is high, any additional incoming input triggers are ignored until the pulse cycle ends and the circuit reverts to its stable state. Once the circuit is stable, the next incoming trigger will start the process again.

So with a monophonic input that has a clear fundamental or defined pitch, the pulser behaves fairly nornally as you’d expect, tracking the pitch input. The hardware has limits due to its design, however, and there are 2 cases where (un)wanted noise on the pulser input could be contributing to some of the more unique parts DOOM sound.

For instance, with a 50Hz sine wave, you expect fixed pulses at 50Hz intervals. But when that sine wave’s pitch exceeds the maximum pulse width, the pulser will create a dissonant output in an attenpt to track a pitch beyond its physical limitations.

EDIT: Accidentally posted too early, I’m on moble.

Adding noise does this. Increasing harmonic content does this. And Mick used a sine wave with white noise and added a bunch of harmonics with distortion.

With your method, even using direct MIDI input, do you think there would be a way to mimic this instability?

No, I get it. That’s the behavior you’ll get (depending on how wide you tune the initial “pulse” waveform and the position of the Vocoder slider, which resizes the grains).

I assumed that the way the pedal worked was that it triggered the pulse on an upward zero-crossing of the incoming signal, ran it for a duration of time, and then shut it off until the next upward zero crossing. What that sounds like depends on the duration of the signal pulse; if it’s shorter than the cycle time of the fundamental, you get an impulse train (a series of pulses whose spacing is synced to the oscillator that’s coming in) which is either matching the fundamental or one of its overtones (if the incoming waveform has multiple zero crossings per “cycle”, but a sine wave doesn’t).

Is that what actually happens? I mean if it’s got a fixed-duration “on” state, then any frequency which exceeds the pulse train is just going to be aliased down to a lower partial (say the pulse is 2.5x the cycle length; you’ll get one pulse triggered every 3 cycles, so you’ll get a 1/3rd harmonic relationship to the fundamental). NOISE would certainly create some weirdness, because it’s noise, so it would be unpredictable when the oscillator would trigger.

If I were to attempt to simulate this, without specifically HEARING the effect in isolation, I’d take the random LFO’s output and map it to the oscillator’s tune, bipolar an octave in each direction, and use the mod remap to make it so it’s basically 3 steps (1 octave down, neutral, 1 octave up), and then maybe take a couple of small segments and add tiny little noise in the remap. So basically, the random LFO (set to move quickly) will, probabilistically, MOSTLY land on a flat space, but occasionally land an octave below or above for a bit, and even more occasionally trapse across a space where it “loses the pitch”.

See attached for a demonstration; IDK how closely this approximates the ACTUAL circuit, this is all purely based on description of its function.
Bad Tracker.vital (311.3 KB)