In the new Update of Fabrik, we added post processing to our graph. We decided to integrate both the voice part and post process part of the synth in the same graph. This allows for better layering capabilities, a patcher-like post processing experience and a more free sound design experience.
Voices
The voice part of the synth is usually built from oscillators, noise, waves, LFOs, envelopes, etc. It is the part that is calculated for each key-press on your keyboard. Meaning that if you play a chord with 3 notes, it will calculate this part 3 times with different base frequencies set for the oscillators.
The “Voice Output” block
Since we now have multiple signals, we need to combine them to get a single synth output. This is done by the “Voice Output” block. It clips the signal, removes DC offset, applies a volume envelope, adds all voices together and applies saturation based on your settings.
Effects / Post processing
After the voice output, we have a single signal where we can apply effects. We call this post processing. This is where most synths apply effects, like filters, distortion, compression, etc.
The difference between the graph parts
The fundamental difference between the voice and post processing is that the voice is calculated for each note and post processing is calculated once. Therefore, it is more CPU efficient to add most blocks to the post processing section. Some things, like the oscillator block don’t work in the post processing part though.
Keep the voice and post processing part separate
It is important that the algorithm can figure out which part is supposed to be in voice and which is in post processing. If you connect the output of a voice output block to a graph part that is in the voice, Fabrik will show the error
You mixed the voice graph with the post process graph. Fix this by removing connections, adding a Voice Output block or adding a Signal Delay block.
To fix this, you will need to make it clear which part is supposed to be in the voice and which is post processing. The part before a voice output node is considered to be in the voice. The part after is considered post processing.
Note, that it is possible to route post processing signals back into the voice using the “Signal Delay” block. This will record the post processing signal and place this recording in each voice after a delay.
Let’s look at some examples. This would be incorrect, because Fabrik can’t tell whether “Wave” is supposed to be in the voice or the post processing part.
Incorrect
To fix it, you could add another voice output or remove the Wave-Output connection
Correct
When you want to route a signal from a post-processed point to a voice, you can’t just connect it, because Fabrik again can’t tell where to place the Wave block:
Incorrect
To make this happen, add a signal delay between your post-processed point and your voice to clarify what you want Fabrik to do.
Correct
If you still have any issues with this, please let us know.