The Geiger Macro
Geiger Counters are used to measure ionizing radiation, such as in radiological protection, experimental physics and the nuclear industry (so says Wikipedia, you might be able to tell that I’m not a physicist!). You would have heard the sound in any post apocalyptic or cold war paranoid era film about a nuclear fall-out.
Reaktor 5 actually has a module dedicated to replicating this sound (left). The information from the manual says it “generates events at random intervals, much like a Geiger Counter radiation particle detector”. To understand this it’s useful to understand radioactive decay, which Wikipeida describes as:
…a stochastic (i.e. random) process at the level of single atoms, in that, according to quantum theory, it is impossible to predict when a particular atom will decay. The chance that a given atom will decay never changes, that is, it does not matter how long the atom has existed.
Mind-numbing eh? Oddly, inside the Geiger macro we don’t see the Geiger primary module that Reaktor supplies. Instead we have a trigger generator similar to a Geiger Counter module but with slightly more flexibility. We have input terminals for P, Rnd and Dyn, and a simple output terminal that leads to ADR envelope.
P is controlled by the Density knob on the front panel while Rnd (random) and Dyn (Dynamic) which have been described above. There are two Randomize modules. P is added to the output of one of these. This in turn receives part of its input from a pulse that is driven by said the other Randomize module.
The LFO’s rate is determined by the P value. This is a logarithmic value converted to linear frequency. This outputs a pulse wave – perfect for triggering envelopes. This is run into an A to E Trig module which converts an audio event into an event output. Phew!
Let’s fire up SpaceDrone in Ableton Live and get some big ‘ole ambient pads moving. I’ve tweaked the default preset, moving the Fundamental to 60 (MIDI note C3 or C4 depending on who you believe), increased the resonance and pan, reduced the dampening and slowed the speed right down.
I next brought the reverb mix down a little (in the ‘B’ view). I’ve just added some EQ and compression too. Nothing special so far.
Adding Live’s Resonator tuned to a C minor 7 chord (C, Eb, G, Ab) gives us a nice Tanpura-like quality to it (you can read about some more awesome stuff to do with Live’s Resonator here). I’ve disabled the input filter, increased the decay and set it to 70% wet.
I’ve added some SoundToys Crystallizer (using the Phillip Glass Echoes preset) and some Valhalla Shimmer. I’ve finished the sound off with a dulling low-pass filter to send it right back in the mix. Feels like dropping acid on the Floating Islands level on Tomb Raider II (without all the gunshots, though).
Reaktor allows us to dive into the architecture of its ensembles at the same level afforded to the sound designers that programmed them. As SpaceDrone contains some relatively low-level primary modules structured in a simple way, we can hack it to allow some more flexibility. I’m not going to focus on making it look pretty, as this would require some Photoshop wizardry that I’m not up for. So with that in mind let’s go.
There are four main changes I’m going to make:
- Add an external input. We could take signals from our DAW, other Reatkor ensembles or even the external input on our sound card.
- Add different waveforms other than just white noise to switch between when the external input is not engaged. Waveforms with more harmonics will work much better.
- Add a MIDI input option for determining the fundamental tone.
- Include a simple bit of boolean logic (AND gate) for the ADR envelope, so we can use this with the above MIDI keyboard to “play” SpaceDrone.
Start off by adding an In Port module (Built-In Module > Terminal) and connecting it to a switch (Built-In Module > Panel). Add in any additional oscillators you want now (I’ve opted for the Bi-Saw and Bi-Pulse, but FM or even samplers would work a treat) and connect then to the Switch naming each port. Connect the ‘1’ constant from the Noise module to the A (amplitude) inputs of each oscillator and replace the ‘in’ on the 2-Pole-Filter with the output from the Switch. Go back a level in the breadcrumb trail you’ll need to add an input terminal SpaceDrone at the Instrument level too.
Ctrl + click (or right click) on the W input (width, or symmetry) on the Bi-Pulse and click Add Control. This will create a knob which you can rename whatever you want (I’ve opted for Sym) and also connect it to the W input on the Bi-Saw. You’ll need to repeat this for any other oscillators you’ve added.
Alternatively, to keep things looking pretty you can copy and paste one of SpaceDrone’s knobs (for e.g Attack) and change the values to suit to the W inputs in the Properties > Function tab. Oddly the ranges expected on the W input for the Bi-Pulse (-1 to 1) differ from the Bi-Saw (0 to 6) so we’ll have to do some maths to get the ranges matching up nicely.
I’ve set the Sym knob to range from -1 to 1 and plugged that directly into the Bi-Pulse. For the Bi-Saw multiply the result by 6 (now ranging from -6 to 6) and connect that to the Bi-Saw.
Let’s move on to the ADR envelope. Add a Gate MIDI In module (Built-In Module > MIDI In) to receive MIDI note on and note off messages. This will output MIDI velocity as a decimal between 0 and 1.
Multiply this by the output of the Geiger Macro and add the result to a switch naming the port “MIDI” or something. Now the Geiger will only sound if the velocity is greater than 0, effectively a boolean AND gate.
Add the Geiger Macro (without the MIDI In multiplication) to a new port on the Switch and name this “Drone” or similar. Connect this Switch to the input of the ADR module and now you can flick between a MIDI input and the original self-playing style. I’ve found it best to switch the Gate MIDI In module to Mono (see how it’s orange rather than yellow).
The only problem is that lower velocities will produce much quieter sounds, so I’m going to create a simple if statement. This will take an incoming velocity value and output a 1 if the value is greater than 0, and still output 0 for note off.
Take the the Gate MIDI In module into the Ctl input of a Router module (Built-In Module > Event Processing > Router 1, 2). This will only output when Ctl is greater than 0. Then run both the outputs of the Gate MIDI In and Router modules into the A and B inputs of a Compare module (Built-In Module > Math) and take the Greater than (>) output to the multiply module. It should look something like this:
*edit* Owen Vallis has correctly pointed out to me that the Router is unnecessary in primary as:
The Primary version includes the router conditionals by offering different output ports (> and <=), and doesn’t require any other modules to work; however, it has a limited set of fixed outputs to choose from (although there is also the compare equals).
…so you can just use the Compare module alone in your version of this.
Now let’s move on to the fundamental. Add a Note Pitch MIDI In (Built-In Module > MIDI In). This outputs our MIDI input as a logarithmic pitch (MIDI pitches range from 0 to 127, or C-2 to G8). Add this to a switch and use the output of the Fundamental knob as the other input on the switch.
Ensure the Note Pitch MIDI In module is set to Mono too. Finally connect the output of the switch to the P (pitch) inputs on any oscillators that require them.
You can download the finished ensemble here.
Here are some audio examples of the external input, firstly me tapping the pinhole mic on my MacBook Pro (with some air conditioning on backing vocals):
Here’s a looped pad (didn’t sound as awesome as I’d hoped tbh):
And lastly a breakbeat:
Digging around for alternative approaches I found this from Reaktor Tips. They’ve approached it differently adding an envelope after the Reverb unit and doing the pitch in a slightly different way, but we achieve a similar result.
That’s all Folks!
If you’re interested in learning more about building within Reaktor, then this getting started guide might be your thing.
Here’s a short video I’ve made highlighting some of the above topics, albeit in slightly less detail: