How to Build a Synth in Reaktor (Part IV) - Voice Handling
In this tutorial, we’ll be covering the basics of mono and poly signals, and use this knowledge to create a voice macro that will give us access to some pretty huge sounds.
MONO VS POLY
Almost every module in Reaktor can be marked to be either monophonic or polyphonic. You can tell which has been selected by looking at any active module in the structure:
A yellow indicator box is a poly module, an orange one is a mono module.
To set the mono/poly controls of any module that allows it, you may simply right click on that module and check/uncheck the ‘Mono’ option.
So, what’s the difference? Lets start with an easy example. Make sure you have the debugging option turned on (CTRL+B), and you can hover over any wire in the structure view to see the values of that signal. Here’s what a typical polyphonic signal looks like:
In this picture, you’ll notice there are 4 values – that is because by default our instrument has 4 voices.
What it means to have 4 voices is that our synth can play up to 4 notes at a time, each note gets assigned to it’s own voice. If you try to play 5 notes at once, you’ll notice when the fifth note gets pressed, the first note played will turn off to make room for the newest note.
In essence, using polyphony for a module allows that module to be used multiple times without actually creating a separate module for each MIDI note that we want to use.
This has numerous advantages – it saves time, space, and CPU, and it is also very easy to change the number of voices in an instrument.
As you may have guessed, a mono signal only has a single value:
Some examples of mono modules include Knobs and Numeric Readouts. A Knob can only have a single value, it does not have a separate value for each voice. Likewise, a Numeric Readout can only display a single value at a time.
So, how do mono and poly signals interact with each other? First, a polyphonic signal cannot feed a monophonic module. Here’s what happens if you try:
The red ‘X’ that appears lets us know that this connection is not going to work properly. The problem is the Numeric Readout module only wants to receive a single value to display. When it receive 4 values to display instead, it notices an error in the code and instead simply displays a 0, as though it were not connected at all.
So, what happens when we plug a monophonic signal into a poly module? It just so happens we’ve been doing this since day one. Here’s a great example:
The knob is only outputting a monophonic value, yet the filter it feeds is polyphonic. In this instance, the polyphonic module will receive the value and use it for every available voice!
Here is a simple illustration of this concept from the OSCILLATOR macro:
The knobs feeding the first add module are monophonic, yet the add module itself is poly. As you can see, the values have been added and duplicated for each available voice.
In fact, since all 4 voices will end up being identical (they are all the same two numbers added together after all), you can go ahead and mark the first Add module in this picture to be Mono.
With that done, let’s take a look at the values going in and out of the second Add module:
Now, we can see the Mono value equal to -12.1, and that every value going into the Add module from the Note Pitch module is added to -12.1 individually.
Okay, hopefully you understand a little bit about why polyphony is useful and how it works. Don’t be worried if you’re still a bit foggy on the details – it takes some time to figure out!
So, let’s use these new concepts to expand the sound capabilities of our synth.
Many synths have a unison mode, that allows for multiple voices to be played with the press of a single note. Each duplicated voice gets slightly detuned from the rest, creating a much ‘fatter’ sound.
To start accomplishing this, I made a quick macro:
This is a very rough start, but let’s go over what’s happening. First, I replaced every Note Pitch and Gate Module in the synth with the outputs from this macro.
So, when the Mono Unison button is turned off, the synth operates as it had before – the polyphonic Note and Pitch values control all of the modules and everything is as it was.
With the Mono Unison button on, however, the monophonic Pitch and Gate values are used. Since the mono signals are being fed directly into a poly module, however, they are duplicated for each voice. What this means is that when you play a single note with the Unison mode selected, you will play that note with all 4 voices at once!
Unfortunately, this is a very unsophisticated method. For starters, there is no way to detune each voice, which is undesirable, and there is no way to choose the number of voices to use at once – it is possible that we would prefer to use 2 or 3 voices instead of all 4.
Here is a method to let the user choose how many voices to use:
To understand what the V output of the Voice Info module is doing, simply hover over the wire, it should be very self-explanatory (voice 1 outputs 1, voice 2 outputs 2, etc).
The ‘V’ output is compared to the number of active voices (determined by the Unison knob, valued 1-4). The compare module outputs a 1 for each voice that is being used, and a 0 for each that is not.
The compare module is then multiplied by the mono Pitch and Gate modules – meaning their values are duplicated for each active voice, but still 0 for the other voices.
Now, all we need to do is find a way to detune each voice. This is very important, without detuning the effect is all but lost – you might as well be just turning up the volume.
Again, the ‘ V’ output of the Voice Info module will come in handy. We can let the user choose a detuning value and then multiply the value against the ‘V’ output to detune each voice by a little bit.
Then we only need to center the values. Here’s the code:
As you can see, I placed the detuning code is a separate macro to avoid cluttering the PITCH/GATE macro.
The best way to follow code like this is simply to hover over each wire and see what is happening to the values along every stop of the way. If you do, you’ll notice that each voice gets detuned by the value of the Detuning knob multiplied by the voice number, and then the values are centered around 0.
SYNCING THE PHASES
A large part of the unison sound is a phaser-like effect that depends on the oscillators being synced initially. If we don’t sync the oscillators, it is not possible to make the same sound consistently with each note press.
You can hear this effect if you’ve followed along so far by making a sound that takes advantage of Unison mode. You’ll note that each note press starts at a different part of the evolving sound.
Fortunately, this is an easy thing to fix. Replace the oscillator modules in the OSCILLATOR macro with their sync counterparts like so:
In order to take full advantage of the new work this week, I decided to make the synth have 8 voices instead of 4. This can be done by selecting the instrument itself in the structure, and using the FUNCTION tab in the properties.
When you do this, you should also change the Unison knob to range from 1 to 8.
I programmed a few new snapshots to make use of the Mono Unison mode, they have a pretty distinct sound, wide and phaser-like.
You can download my work from this tutorial Download my work for this tutorial here. As always, leave any questions in the comments below and I’ll do my best to help.
In the next tutorial in this series, we’ll cover a simple glide function for Mono Unison mode, and get back to working on the LFO.