Back to Index

Update: 2020-06-15

Table of Contents


IterativeSinCluster is an additive synthesizer. This synth computes 512 sine waves for each note to make tone cluster. I somehow thought “iterative sin” is a valid term. Correct term is “recursive sine”.

IterativeSinCluster requires CPU which supports AVX or later SIMD instructions.

The package includes following builds:

macOS build isn’t tested because I don’t have Mac. If you found a bug, please file a issue to GitHub repository or send email to

Linux build is built on Ubuntu 18.0.4 and tested on Bitwig 3.1.2 and Reaper 6.03. Bitwig 3.1.2 seems to have a bug that occasionally blackouts GUI.



Place *.vst3 directory to:

DAW may provides additional VST3 directory. For more information, please refer to the manual of the DAW.


Extract preset zip, then place preset directory to the OS specific path:

Preset directory name must be the same as the plugin. Make Uhhyou directory if it does not exist.

Windows Specific

If DAW doesn’t recognize the plugin, try installing C++ redistributable (vc_redist.x64.exe). Installer can be found in the link below.

Linux Specific

On Ubuntu 18.0.4, those packages are required.

sudo apt install libxcb-cursor0  libxkbcommon-x11-0

If DAW doesn’t recognize the plugin, take a look at Package Requirements section of the link below and make sure all the VST3 related package is installed.

REAPER on Linux may not recognize the plugin. A workaround is to delete a file ~/.config/REAPER/reaper-vstplugins64.ini and restart REAPER.

Color Configuration

At first time, create color config file to:

Below is a example of style.json.

  "fontPath": "",
  "foreground": "#ffffff",
  "foregroundButtonOn": "#000000",
  "foregroundInactive": "#8a8a8a",
  "background": "#353d3e",
  "boxBackground": "#000000",
  "border": "#808080",
  "borderCheckbox": "#808080",
  "unfocused": "#b8a65c",
  "highlightMain": "#368a94",
  "highlightAccent": "#2c8a58",
  "highlightButton": "#a77842",
  "highlightWarning": "#8742a7",
  "overlay": "#ffffff88",
  "overlayHighlight": "#00ff0033"

Hex color codes are used.

First letter # is conventional. Plugins ignore the first letter of color code, thus ?102938, \n11335577 are valid.

Do not use characters outside of 0-9a-f for color value.


Knob and slider can do:

Additionally, number sliders use in Gain, Semi etc. can do:

Overtone has following controls:

Block Diagram

If the image is small, use Ctrl + Mouse Wheel or “View Image” on right click menu to scale.

Diagram only shows overview. It’s not exact implementation.



Boost, Gain

Both controls output gain. Peak value of output will be Boost * Gain.

It’s possible that output gain becomes too small while changing gain of Note, Chord, Overtone. Boost can be useful in this situation.


Parameters for gain envelope.


Change attack curve of gain envelope.


Cutoff freqeuncy can be changed by Semi, which is relative to a note frequency. For example, if the note is C4 and Semi is 12.000, cutoff frequency is set to C4 + 12 semitone = C5.


Add Aliasing

When checked, the synth enables rendering of sine waves over nyquist frequency.

Roughly speaking, nyquist frequency is the highest frequency that can be reconstructed from recorded digital signal. When generating sound, it’s possible to set value that is higher than nyquist frequency. However, the result may contain unexpected frequency due to a phenomenon called aliasing. Add Aliasing is option to add those aliasing noise.

Reverse Semi

When checked, negate sign of Semi. For example, 7.000 becomes -7.000.


Note octave.


ET stands for equal temperament. This parameter can be used to change tuning of Semi and Milli.

Note that this parameter is not to change tuning of notes sent from plugin host. Only affect to internal parameters.

Multiply, Modulo

Change sine wave frequency.

Equation is noteFrequency * (1 + fmod(Multiply * pitch, Modulo)). pitch is calculated from Note, Chord and Overtone. fmod(a, b) is a function that returns reminder of a / b.


Time length to change some parameter value to current one. Unit is in second.

List of parameters related to Smooth. * represents wild card.

Other parameter uses the value obtained from the timing of note-on for entire duration of a note.


Maximum polyphony. Lowering the number of this option reduces CPU load.



When checked, reset random seed for each note-on.


Random seed. This value change random number sequence.

To Gain

Amount of randomization to sine wave gain. Randomization is done for each note-on.

To Pitch

Amount of randomization to sine wave pitch. Randomization is done for each note-on.

Note, Chord, Overtone

Change sine wave gain and pitch.

1 Note have 16 Overtone. 1 Chord consists of 8 Note. 4 Chord are available to use.

Common parameters for Note and Chord.

Leftmost of Overtone is gain of fundamental frequency (1st overtone) of a note. For each bar from left represents 1st, 2nd, 3rd, … , 16th overtone gain.

Below is the summary of calculation of sine wave frequency.

function toneToPitch(semi, milli):
  return 2 ^ (1000 * semi + milli) / (ET * 1000)

for each Chord:
  chordPitch = toneToPitch(Chord.semi, Chord.milli)
  for each Note:
    notePitch = toneToPitch(Note.semi, Note.milli)
    for each Overtone:
      frequency = midiNoteFrequency
        * (1 + mod(Multiply * Overtone * notePitch * chordPitch, Modulo))



Change Dry/Wet mix ratio.


Chorus LFO frequency.


Change stereo spread.


Amount of modulation from LFO to delay time. There are three delays in this chorus.


Delay time.


LFO phase.


Phase difference between delays.


Feedback of delay.

Key Follow

When checked, change delay time relative to note frequency.

Change Log

Old Versions


IterativeSinCluster is licensed under GPLv3. Complete licenses are linked below.

If the link above doesn’t work, please send email to

About VST

VST is a trademark of Steinberg Media Technologies GmbH, registered in Europe and other countries.