Back to Index

Update: 2020-06-15

Table of Contents

IterativeSinCluster

IterativeSinClusterイテレイティブ サイン クラスタはノート 1 つあたり 512 のサイン波を計算する加算合成シンセサイザです。一体、何を考えていたのか iterative sin という言葉を名前に使っていますが、アルゴリズムの種類を表す正しい言葉は recursive sine です。

IterativeSinCluster を使うには CPU が AVX 以降の SIMD 命令セットをサポートしている必要があります。

パッケージには次のビルドが含まれています。

Mac を持っていないので、 macOS ビルドはテストできていません。もしバグを見つけたときは GitHub のリポジトリに issue を作るか、 ryukau@gmail.com までメールを送っていただければ対応します。

Linux ビルドは Ubuntu 18.0.4 でビルドしています。また Bitwig 3.1.2 と REAPER 6.03 で動作確認を行いました。 Bitwig 3.1.2 では GUI が真っ黒になるバグがあるようです。

インストール

プラグイン

名前が .vst3 で終わるディレクトリを OS ごとに決められた位置に配置してください。

DAW によっては上記とは別に VST3 をインストールできるディレクトリを提供していることがあります。詳しくは利用している DAW のマニュアルを参照してください。

プリセット

解凍して出てきたディレクトリを OS ごとに決められた位置に配置すると使えるようになります。

プリセットディレクトリの名前はプラグインと同じである必要があります。 Uhhyou ディレクトリが無いときは作成してください。

Windows

プラグインが DAW に認識されないときは C++ redistributable をインストールしてみてください。インストーラは次のリンクからダウンロードできます。ファイル名は vc_redist.x64.exe です。

Linux

Ubuntu 18.0.4 では次のパッケージのインストールが必要です。

sudo apt install libxcb-cursor0  libxkbcommon-x11-0

もし DAW がプラグインを認識しないときは、下のリンクの Package Requirements を参考にして VST3 に必要なパッケージがすべてインストールされているか確認してみてください。

REAPER の Linux 版がプラグインを認識しないときは ~/.config/REAPER/reaper-vstplugins64.ini を削除して REAPER を再起動してみてください。

色の設定

初回設定時は手動で次のファイルを作成してください。

既存の色のテーマを次のリンクに掲載しています。 style.json にコピペして使ってください。

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"
}

16 進数カラーコードを使っています。

プラグインはカラーコードの 1 文字目を無視します。よって ?102938\n11335577 も有効なカラーコードです。

2 文字目以降のカラーコードの値に 0-9a-f 以外の文字を使わないでください。

以下は設定できる色の一覧です。設定に抜けがあるとデフォルトの色が使われます。

操作

つまみとスライダーでは次の操作ができます。

GainSemi などで使われている数値スライダーでは、上記に加えて次の操作ができます。

Overtone では次の操作ができます。

操作できる箇所を右クリックすると DAW によって提供されているコンテキストメニューを開くことができます。

ブロック線図

図が小さいときはブラウザのショートカット Ctrl + マウスホイール や、右クリックから「画像だけを表示」などで拡大できます。

図で示されているのは大まかな信号の流れです。実装と厳密に対応しているわけではないので注意してください。

パラメータ

Gain

Boost, Gain

どちらも音量を調整します。出力のピーク値は Boost * Gain となります。

NoteChordOvertone のゲインを調整すると音がかなり小さくなることがあります。そんなときに Boost が使えます。

ADSR

音量エンベロープのパラメータです。

Curve

音量エンベロープのアタックの曲線を変更するパラメータ。

Shelving

LowHigh の 2 つのシェルビングができます。

カットオフ周波数はノートの音程を基準として、 Semi で指定した半音単位で相対的に決まります。例えば音程が C4 、 Semi が 12.000 のときは カットオフ周波数は C4 + 12 半音 = C5 になります。

変更する音量は Gain で調整できます。

Pitch

Add Aliasing

チェックを入れると、ナイキスト周波数より高い周波数が指定されたサイン波もレンダリングします。

ナイキスト周波数とは、ざっくりいえば録音したデータが再現可能な最高周波数のことです。音を生成するときはナイキスト周波数以上の値を指定することができますが、折り返し(エイリアシング)と呼ばれる現象によって計算結果は予期しない周波数になってしまいます。 Add Aliasing は、こうしたエイリアシングノイズを足し合わせるオプションです。

Reverse Semi

チェックを入れると、 Semi の符号を逆転させます。たとえば 7.000-7.000 として処理されます。

Octave

ノートのオクターブです。

ET

平均律の値です。この値によって SemiMilli の調律を変更できます。例えば ET が 12 なら 12 平均律になります。 ET は Equal Temperament の略です。

ホスト側から送られてくるノートの調律を変更するわけではないので注意してください。

Multiply, Modulo

サイン波の周波数を変更します。

計算式は ノートの周波数 * (1 + fmod(Multiply * pitch, Modulo)) のようになっています。 pitchNoteChordOvertone で指定した値から計算されるピッチです。 fmod(a, b)ab で割った余りを計算する関数です。

Smooth

特定の値を変更したときに、変更前の値から変更後の値に移行する時間(秒)です。

Smooth と関連するパラメータのリストです。 * はワイルドカードです。

他のパラメータはノートオンのタイミングで指定されていた値をノートの発音が終わるまで続けて使います。

nVoice

最大同時発音数です。

Random

Retrigger

チェックを入れると、ノートオンごとに乱数シードをリセットします。

Seed

乱数のシード値です。この値を変えると生成される乱数が変わります。

To Gain

ノートオンごとに各サイン波の音量をランダマイズする度合いです。

To Pitch

ノートオンごとに各サイン波の周波数をランダマイズする度合いです。

Note, Chord, Overtone

サイン波のピッチと音量を指定します。

1つの Note あたり 16 の Overtone が発音されます。8つの Note で 1 つの Chord になります。そして 4 つの Chord が使えます。

NoteChord に共通のパラメータです。

Overtone は左端が基本周波数(第1倍音)の音量で、右に一つ進むごとに第2倍音、第3倍音、 … 、第16倍音の音量を表しています。

サイン波の周波数の計算式は次のようになっています。

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))

Chorus

Mix

Dry/Wet の比率を調整します。

Freq

コーラスの LFO の周波数です。中央から右に回すと正、左に回すと負の周波数を指定できます。

Depth

左右の広がりを調整します。

Range

LFO によってディレイ時間を変調する度合いです。 3 つのディレイが用意されています。

Time

ディレイ時間です。

Phase

LFO の位相です。

Offset

ディレイの間での位相差です。

Feedback

ディレイのフィードバックです。

Key Follow

チェックを入れると、ディレイ時間をノートの音程に応じて変更します。

チェンジログ

旧バージョン

ライセンス

IterativeSinCluster のライセンスは GPLv3 です。 GPLv3 の詳細と、利用したライブラリのライセンスは次のリンクにまとめています。

リンクが切れているときは ryukau@gmail.com にメールを送ってください。

VST® について

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