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: