Guide For Getting Perfect Octave Interval From The Generators.

Post Reply
User avatar
Logickin λ
Posts: 165
Joined: Sat Sep 08, 2018 8:31 pm
Contact:

Guide For Getting Perfect Octave Interval From The Generators.

Post by Logickin λ »

Important: This is a community effort post, if anyone found a new perfect octave trick, feel free to post it here.

Story:

I am guessing many users noticing that the tuning of the generators are in fact slightly out of tune when playing in Octave.
When playing 2 Saws in Octave interval, you hear the "Sync" Effect in a cycle of 6 seconds, meaning that some of the notes plays in octave will have 1/6 Hz off. (Perhaps rounding error of integer, since most of the notes seems to have the same offset)

Perfect Octave Test.sunvox
(13.39 KiB) Downloaded 134 times

This "imperfect" tuning is actaully great for music, since it will giving a richer sound when layering chords; however, sometimes we needed perfect octave for some synth design like additive synths or a simple synth bass by layering 2 saws in an octave, so....


Guide For Getting Perfect Octave Interval From The Generators:

Here are all the tricks I have found so far, excluding the use of sampler, to move the wave of a generators from octave to another without that slight offset. In this post, you will see the following customised terms:

- Module Complexity: This is an idea borrowed from big O notation, to shows how well it scale when laying octaves. If the implemented has O(1), meaning you only need 1 block per octave; if this is O(n²), you need 1 block for the origin, 2 for +1 Oct, 4 for +2 Oct, 8... and so on.

- Polyphony Stability: Some of the methods can only work in monophonic way since will distorted when more then one notes are played, result in a dissonance results.

- Supported Signal Type: Just shows the method which the type of waveform are supported.

Ok, let's move to the implementation!


Method 1 - Sub Oscillator Method:

Module Complexity: O(1)
Polyphony Stability: Stable for all supported signals
Supported Signal Type: Saw, Sine, Square(with Drawn Mode)

This is the the simplest method to get a perfect octave, by adding another generators that somehow contains the signal with the lower/higher octave.

Square in (analog)generator is the best example to for demonstrate the effect, since it is lower by 1 octave as default.

You can move a saw down by an octave by combining with the a square and a saw wave:

Image

For sine wave, fm module can be used, since the C.freq ratio provides different harmonics, you can make different interval precisely without hearing the shifting effect.


Method 2 - Phase Shifting Method:

Module Complexity: O(n²)
Polyphony Stability: Stable for all supported signals
Supported Signal Type: Saw, Square

In case you need to move a saw wave 2 octave apart or more, or to use the duty cycle for the square wave, you can use this method.

The trick is to send multiple notes towards a generator, using different phases, to fake it like a single waveform, so it sound like a single wave but with different octave.

Here is the setting of using phase shift:
You needed n² number of modules for +n octaves, and the rules of phase shift:

Code: Select all

p = 32768/(n+1)
meaning if you want to make rise the saw wave by 3 octaves, you need 8 multiSynth modules by shifting the phase 4096 each.

This screenshot shows the routing of the set up (Instead of routing to 1 generator, you can route to individual generator as well):

Image

You can use this tricks for square as well, but you have to sacrifice the resolution of the duty cycle. For risen n number of octave, you need to set the duty cycle based on the following rule, to get the correct sound:

Code: Select all

d = 512/(n+1)
Here are some examples:
Image


Method 3 - Absolute Method:

Module Complexity: O(2n)
Polyphony Stability: Not stable, only works for monophonic.
Supported Signal Type: Triangle, *Asine, **Hsine

* Required method 1 to get other frequency.
** combine the original sine with the "absoluted" sine, and method 1 to get other harmonics.

For some symmetrical waveforms like the triangle wave, you can fold the signal by setting the amplifier to absolute mode. After fixing the DC offset using amplifier or DC blocker, you can create a triangle wave that is an octave higher than the original. You can also stack the following set up to get other octave as well:

Image

Due to the use of absolute function, playing 2 notes will distorted the sound of the original triangle, you have to make several instances and play it with a multisynth in round robin mode.

Edit 1: Fixed my horrible grammatical mistakes that lead to confusion.
Post Reply