Back to Index

Update: 2024-11-16

Table of Contents

ClangSynthクラング シンセ は金属的なパーカッションの音が得意なシンセサイザです。金属的な質感はフィードバック・ディレイ・ネットワーク (FDN) を用いたディレイ間のクロスフィードバックによるものです。 WaveCymbal や FDNCymbal よりはシンバルに似た音が出ます。

ClangCymbalクラング シンバル は ClangSynth のスピンオフです。 FDN の大きさが 64 * 64 に増えているので、よりリッチな倍音が出ます。ただし CPU 負荷も増えているのでモノフォニックです。オシレータはシンバルの合成に適したノイズとパルス列の混合に変更されています。マンホールをアスファルトの上で引きずったような音も出せます。

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

Linux ビルドは Ubuntu 24.04 でビルドしています。もし Ubuntu 24.04 以外のディストリビューションを使っているときは、プラグインが読み込まれないなどの不具合が起こることがあります。この場合はビルド手順に沿ってソースコードからビルドしてください。

macOS で使用するときは macOS パッケージのダウンロードを推奨します。また Apple Developer Program に加入していないので、インストール時に Gatekeeper を迂回するように設定する必要があります。詳細は インストール -> macOS の節を参照してください。

何かあれば GitHub のリポジトリに issue を作るか ryukau@gmail.com までお気軽にどうぞ。

paypal.me/ryukau から開発資金を投げ銭することもできます。

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

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

注意: プリセットの無いプラグインもあります。

プリセットはページの最上部のリンクからダウンロードできるプラグインパッケージに含まれています。以下はプリセットのインストール手順です。

  1. ページの最上部のリンクからプラグインをダウンロード。
  2. ダウンロードした zip ファイルを解凍。
  3. presets ディレクトリ内の Uhhyou ディレクトリを OS ごとに決められたディレクトリに配置。

以下は OS ごとのプリセットの配置先の一覧です。

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

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

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

sudo apt install libxcb-cursor0  libxkbcommon-x11-0

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

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

重要: full パッケージは動作未確認です。以下のファイルは codesign されていないので削除する必要があるかもしれません。

macOS パッケージでは上記のファイルの削除は不要です。また、すべてのパッケージは codesign コマンドの ad-hoc signing の状態になっています。

プラグインの初回起動時に「破損している」という趣旨のメッセージが表示されることがあります。この場合は、ターミナルを開いて、解凍した .vst3 ディレクトリに次のコマンドのどちらか、あるいは両方を適用してみてください。 /path/to/PluginName.vst3 の部分はインストールしたプラグインのパスに置き換えてください。

xattr -rd com.apple.quarantine /path/to/PluginName.vst3
xattr -rc /path/to/PluginName.vst3

プラグインは署名されていない (unsigned) 、または公証されていない (un-notarized) アプリケーションとして認識されることがあります。この場合は、警告メッセージが表示された後に、システム環境設定を開いて「セキュリティとプライバシー」 → 「一般」の「このまま開く」ボタンを押してください。以下にリンクした Apple 公式のヘルプページにスクリーンショット付きで同じ手順が掲載されています。「ノータリゼーションを受けていない App や未確認の開発元の App を開きたい場合」を参照してください。

ここまでの手順を経てまだ動かないときはインストール先を /Library/Audio/Plug-ins/VST3/ あるいは /Users/$USERNAME/Library/Audio/Plug-ins/VST3/ のいずれか使っていなかったほうに変えてみてください。

上記の方法がすべて上手くいかなかったときは以下の手順を試してみてください。

  1. ターミナルを開いて sudo spctl --master-disable を実行。
  2. システム環境設定を開いて「セキュリティとプライバシー」 → 「一般」 → 「ダウンロードしたアプリケーションの実行許可」と辿り、「全てのアプリケーションを許可」を選択。

上記の手順を実行するとシステムのセキュリティが弱くなるので注意してください。元に戻すには以下の手順を実行してください。

  1. システム環境設定を開いて「セキュリティとプライバシー」 → 「一般」 → 「ダウンロードしたアプリケーションの実行許可」と辿り、「App Store と認証済みの開発元からのアプリケーションを許可」を選択。
  2. ターミナルを開いて sudo spctl --master-enable を実行。

注意 この節の内容は macOS パッケージには関連しないと考えられますが未検証です。 (GitHub の issue)

full パッケージを利用する場合は以下のコマンドを適用することで利用できるかもしれません。

sudo codesign --force --deep -s - /path/to/PluginName.vst3

codesign の利用には Xcode のインストールが必要となるかもしれません。

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

プラグインのウィンドウを開くたびに style.json が読み込まれて更新されます。

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

style.json の設定例です。

{
  "fontFamily": "Tinos",
  "fontBold": true,
  "fontItalic": true,
  "foreground": "#000000",
  "foregroundButtonOn": "#000000",
  "foregroundInactive": "#8a8a8a",
  "background": "#ffffff",
  "boxBackground": "#ffffff",
  "border": "#000000",
  "borderCheckbox": "#000000",
  "borderLabel": "#000000",
  "unfocused": "#dddddd",
  "highlightMain": "#0ba4f1",
  "highlightAccent": "#13c136",
  "highlightButton": "#fcc04f",
  "highlightWarning": "#fc8080",
  "overlay": "#00000088",
  "overlayHighlight": "#00ff0033"
}

以下はフォントオプションの一覧です。

カスタムフォントを使用するには、プラグインディレクトリの *.vst3/Contents/Resources/Fonts*.ttf ファイルを配置します。

注意: fontFamilyfontBoldfontItalic で設定したフォントファミリ名とスタイルの組み合わせが *.vst3/Contents/Resources/Fonts 以下のいずれかの *.ttf ファイルに含まれていないときは VSTGUI が指定するデフォルトフォントが使用されます。

fontFamily が長さ 0 の文字列 "" のときはフォールバックとして "Tinos" に設定されます。長さが 1 以上かつ、存在しないフォントファミリ名が指定されると VSTGUI が指定するデフォルトフォントが使用されます。

ボールドあるいはイタリック以外のスタイルは VSTGUI がサポートしていないので動作確認していません。該当する例としては Noto フォントの Demi Light や、 Roboto フォントの Thin や Black などがあります。

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

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

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

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

パラメータが割り当てられているコントロールの上で 右クリック すると、 DAW から提供されるコンテキストメニューが開きます。

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

青い縦棒が並んだコントロール (BarBox) ではショートカットが使えます。ショートカットは BarBox を左クリックしてフォーカスすると有効になります。フォーカス後にマウスカーソルを BarBox の領域外に移動させると、ショートカットが一時的に無効になります。ショートカットによって変更されるパラメータはカーソルの位置によって変更できます。

左下のプラグイン名をクリックすると、よく使いそうな一部のショートカットを見ることができます。利用できる全てのショートカットを次の表に掲載しています。

入力 操作
左ドラッグ 値の変更
Shift + 左ドラッグ 値の変更 (スナップ)
Ctrl + 左ドラッグ デフォルト値にリセット
Ctrl + Shift + 左ドラッグ 値の変更 (フレーム間の補間が無効)
ホイールドラッグ 直線の描画
Shift + ホイールドラッグ 1 つのバーを編集
Ctrl + ホイールドラッグ デフォルト値にリセット
Ctrl + Shift + ホイールドラッグ ロックの切り替え
a 符号を交互に入れ替え
d すべての値をデフォルト値にリセット
D 最小値・中央値・最大値の切り替え
e 低域の強調
E 高域の強調
f ローパスフィルタ
F ハイパスフィルタ
i 値の反転 (最小値を保存)
I 値の反転 (最小値を 0 に設定)
l マウスカーソル下のバーのロックの切り替え
L 全てのバーのロックを切り替え
n 最大値を 1 に正規化 (最小値を保存)
N 最大値を 1 に正規化 (最小値を 0 に設定)
p ランダムに並べ替え
r ランダマイズ
R まばらなランダマイズ
s 降順にソート
S 昇順にソート
t 少しだけランダマイズ (ランダムウォーク)
T 少しだけランダマイズ (0 に収束)
z アンドゥ
Z リドゥ
, (Comma) 左に回転
. (Period) 右に回転
1 すべての値を低減
2-4 インデックスが 2n-4n の値を低減
5-9 インデックスが 2n-5n の値をホールド

Shift + 左ドラッグ のスナップは一部の BarBox だけで有効になっています。特定の BarBox にスナップを追加したいという要望があれば、気軽に GitHub のリポジトリに issue を開いてください。

Shift + ホイールドラッグ による 1 つのバーを編集は、マウスホイールが押された時点でカーソルの下にあるバーだけを編集します。マウスホイールが押されている間はカーソルの左右の位置に関わらず、選択したバーのみを編集できます。

Ctrl + Shift + ホイールドラッグ によるロックの切り替えでは、マウスホイールが押された時点でカーソルの下にあるバーの反対の状態が残り全てに適用されます。例えばカーソルの下のバーがアクティブだったときはロックに切り替えます。

いくつかの BarBox の下にはスクロールバーがついています。細かい調整を行うときはスクロールバーの左右のハンドルを 左ドラッグ で動かすことで表示範囲を変更できます。スクロールバーでは次の操作が行えます。

音量の振れ幅が大きいので ClangSynth の後に必ずリミッタを挿入することを推奨します。

FDN のパラメータが短時間に大きく変わると発散することがあります。 LFO やエンベロープを使うときは注意してください。発散はパラメータが時間とともに変わると線形時不変 (linear time invariant, LTI) なシステムではなくなるために起こります。以下は発散の原因となるパラメータの一覧です。

Refresh Wavetable ボタンを押すとウェーブテーブルが更新されます。更新中は CPU 負荷が上がり、ほぼ確実に音が止まるので注意してください。

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

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

角かっこ [] で囲まれているのは単位です。以下は単位の一覧です。

Output [dB]

出力のゲインです。

Attack [s]

出力直前のゲインをスムーシングする秒数です。値が大きくなるとアタック時間とともに、リリース時間も長くなります。

フィルタのカットオフ周波数へと変換されるので、あくまでも目安となる値であって、正確な値ではありません。

Attack は、FDN セクションの Reset to Note On がチェックされていないときに、ノートオンでポップノイズが起こることを防ぐために導入されました。 FDN セクションのローパスフィルタのカットオフ周波数を下げているときは、値を小さくしすぎるとポップノイズが目立つことがあります。シンバルなどの高い周波数成分が多い音を作るときは 0 まで値を下げても、ほとんど問題になりません。

Release [s]

ノートオフの後に続くリリース時間です。

フィルタのカットオフ周波数へと変換されるので、あくまでも目安となる値であって、正確な値ではありません。

Octave, Semi, Milli

全体の音の高さを変更します。

ET, A4 [Hz]

音律を変更します。

ET は Equal Temperament (平均律) の略です。 ET が 12 のときは 12 平均律となります。 ET を 12 よりも小さくすると無音になる範囲が増えるので注意してください。

A4 [Hz] は、音程 A4 の周波数です。

P.Bend Range

ピッチベンドの範囲です。単位は半音です。

nUnison

ユニゾンにつかうボイスの数です。

Pan

パンを振る幅です。

初回のノートオンでは、右から左へ向かって、ピッチの低い音から高い音へと順番にパンが振られます。以降はノートオンごとにパンの割り当てを左に回転させます。

Pitch *

ユニゾンで変更されるピッチに乗算される値です。

Pitch * が 0 のとき、 Interval の値は無効になります。

ET

Interval のみで使われる平均律の値です。

Interval [st.], Cycle At

Interval はユニゾンで使われるボイスのピッチを、ノートオンで送られてきたピッチからどれだけずらすかを調整する値です。

Cycle AtInterval の値を巻き戻すインデックスです。

例えば Interval が以下の値に設定されているとします。

1, 2, 3, 4

Interval には Pitch * の値が乗算されます。仮に Pitch * の値が 0.1 とすると以下の値へと変換されます。

0.1, 0.2, 0.3, 0.4

ここで Cycle At が 1 に設定されているとすると、以下のようにインデックス 1 で巻き戻しながら繰り返します。

0.1, 0.2, 0.1, 0.2, ...

さらにノートオンで MIDI ノート番号 60 のピッチが入力されると、以下のようにピッチがボイスに割り当てられます。

60,                         // 60
60 + 0.1,                   // 60.1
60 + 0.1 + 0.2,             // 60.3
60 + 0.1 + 0.2 + 0.1,       // 60.4
60 + 0.1 + 0.2 + 0.1 + 0.2, // 60.6
...

以下は計算の手続きです。

modulo = cycleAt + 1;
accumulator = 0;
for index in [0, nUnison) {
  voice[index].pitch = notePitch + pitchMultiplier * accumulator;
  accumulator += interval[index % modulo];
}

nVoice

最大同時発音数です。

CPU 負荷を下げるときは nVoice の値を下げると効果的です。

Smoothing [s]

パラメータのスムーシング時間です。

フィルタのカットオフ周波数へと変換されるので、あくまでも目安となる値であって、正確な値ではありません。

Impulse [dB]

ノートオンと同時に発音されるインパルスの振幅です。

インパルスはシンバルの音を作るときの味付けに使えます。またインパルスはベロシティに影響されないので、ばちとシンバルの衝突の強弱を演奏時に調整するときにも便利です。

TODO プリセットの紹介

Gain [dB]

オシレータ出力のゲインです。

Attack [s], Decay [s]

オシレータの AD エンベロープのアタック時間とディケイ時間です。

フィルタのカットオフ周波数へと変換されるので、あくまでも目安となる値であって、正確な値ではありません。

ディケイ時間が短いときは Attack を長くしても音はほとんど変わりません。

Octave, Semitone

オクターブあるいは半音単位のオシレータのチューニングです。

Denom. Slope, Rot. Slope, Rot. Offset, Interval

オシレータのウェーブテーブルの基となるソース・スペクトラムを合成するパラメータです。

Denom. Slope の値が 1 より大きいときはローパス、 1 より小さいときはハイパスのように機能します。値が 1 のときは、のこぎり波と同じ振幅特性になります。

Interval を 1 より大きくするとソース・スペクトラムが 0 となる箇所を作り出します。例えば Interval の値が 3 なら、インデックス 1, 4, 7, 10, 13, … の値だけが書き込まれて、それ以外のインデックスでの振幅は 0 となります。 Denom. Slope の値が 1 かつ Interval の値が 2 なら、矩形波が生成されます。

以下は Denom. SlopeRot. SlopeRot. OffsetInterval を使ったソース・スペクトラムの計算方法です。

for index in [1, numberOfHarmonics] {
    if (index % interval != 0) continue;
    sourceSpectrum[index].amp = 1 / (denominatorSlope * index);
    sourceSpectrum[index].phase = rotationOffset + rotationSlope * index;
}
Harmonic HP

ソース・スペクトラムの振幅に適用されるハイパスフィルタです。

Harmonic HP で指定された値よりインデックスが小さい低周波成分の振幅を下げます。値が 0 のときはハイパスフィルタはかかりません。

以下は Harmonic HP の計算方法です。

for index in [0, harmonicHighpass) {
  sourceSpectrum[index].amp *= index / harmonicHighpass;
}
Blur

ソース・スペクトラムの振幅を通過させるローパスフィルタの係数です。

Blur の値を下げると周波数領域で振幅の値が周囲のインデックスへと拡散するので、位相の回転を無視すると、時間領域に戻したときにはインパルスに近い音になります。

Blur が 1 のときはローパスフィルタはかかりません。

TODO 図

OT Amp., Rot. [rad/pi]

ソース・スペクトラムを、さらに倍音間隔で足し合わせるときの振幅と位相です。

以下は OT Amp.Rot. による最終的なスペクトラムの計算方法です。

targetSpectrum.fill(0);

for i in [0, nOvertone) {
  for k in [0, nFrequency) {
    auto index = (i + 1) * k;
    if (index >= nFrequency) break;
    targetSpectrum[index] += sourceSpectrum[k] * complexFromPolar(otAmp[i], otRot[i]);
  }
}
Refresh Wavetable

ボタンを押すとウェーブテーブルを更新します。

更新中は CPU 負荷が上がり、ほぼ確実に音が止まるので注意してください。

Oscillator セクションの以下のパラメータは Refresh Wavetable ボタンを押すまで更新されません。

FDN

点灯しているときはオシレータ出力が FDN を通過します。

オシレータの出力を確認するときには無効にすると便利です。

Identity

FDN 内のクロス・フィードバックの量を変更します。

Identity の値が 0 から離れるほど、フィードバック行列が単位行列から離れてクロス・フィードバックが増えます。クロス・フィードバックが増えると非整数次倍音が増えて金属的な質感が出ます。

Feedback

FDN のフィードバック量です。

ディレイ内部の線形補間の影響で、 Feedback の値が 1 のときでも少しづつ減衰が起こります。

Interp. Rate

ディレイ時間が変更されたときのレート制限の量です。

Interp. LP [s]

ディレイ時間が変更されたときの補間に使われるローパスフィルタのカットオフ周波数の逆数です。

ディレイ時間の補間は、ローパスフィルタ、レート制限の順で行われます。

Seed

フィードバック行列のランダマイズに使われるシード値です。

Randomize

ノートオンごとにフィードバック行列をランダマイズする割合です。

内部的には行列をランダマイズする基となる値の組を 2 つ持っています。 1 つの組は再生開始の時点で固定されます。もう 1 つの組はノートオンごとに生成されます。この 2 つの組を混ぜる割合が Randomize です。

Randomize が 0 のときは再生開始の時点で固定される組だけを使うので、ノートオンによって倍音が変わりません。 Randomize が 1 のときはノートオンのたびにフィードバック行列が変わるので、倍音も変わります。

OT +, OT *, OT Offset, OT Modulo, OT Random

FDN のディレイ時間を、ノートオンで提供されるピッチの倍音として設定するパラメータです。

OT +OT Offset を整数でない値に設定することで打楽器のような音に近づきます。

OT *OT Modulo はやや不自然な倍音になります。

以下は倍音の計算方法です。

// At note on.
for idnex in [0, fdnMatrixSize) {
    overtoneRandomness[idx] = randomUniform(-1, 1) * otRandom;
}

// For each sample.
overtone = 1;
for idnex in [0, fdnMatrixSize) {
  ot = otOffset + (1 + overtoneRandomness[index]) * overtone;
  fdn.delayTime[index] = sampleRate / (ot * noteFrequency);
  overtone = overtone * otMul + otAdd;
  overtone = fmod(overtone, 1 + otModulo);
}
Reset at Note ON

チェックを入れるとノートオンのたびに FDN の状態をリセットします。

リセットによる CPU 負荷のスパイクに注意してください。音が止まるなどの問題が出るときは nVoice の値を小さくすることで CPU 負荷を軽減できます。

Cutoff [st.]

ディレイの出力が通るローパスフィルタとハイパスフィルタのカットオフ周波数です。

Q

ディレイの出力が通るローパスフィルタとハイパスフィルタの Q です。

Key Follow

チェックを入れるとフィルタのカットオフ周波数をノートのピッチに応じて変更します。

LFO Wave

LFO のウェーブテーブルの波形です。

ウェーブテーブルの波形はすべてのボイスで共有されます。

Retrigger

チェックを入れるとノートオンされたボイスの LFO の位相をリセットします。

チェックを外すとすべてのボイスが同じ位相を使います。

1 つのボイスが 1 つの物体を表すのであれば、チェックを入れたほうがそれらしく聞こえます。ノートオンによって同じ物体を叩く、例えば 8 人が両手にばちをもって同じ中華鍋を叩いているとするなら、チェックを外してください。

Wave Interp.

LFO の波形の補間方法です。

Step を選ぶと LFO をシーケンサのように使えます。 LinearPCHIP と似たような音になりますが、計算がすこし速いです。デフォルトの PCHIP はサンプル間をだいたい滑らかに補間します。

Sync.

チェックを入れるとテンポ同期を有効にします。また同期間隔が変わったときに再生開始時点から導かれる位相へと同期します。

チェックが外れているときは 120 BPM に同期した状態と同じになります。ただし、同期間隔が変わったときに位相を調整しなくなります。

Tempo Upper

テンポ同期が有効な時の同期間隔を表す分数の分子です。

1/1 のときに 1 小節、 4/4拍子であれば 1/4 のときに 1 拍で LFO が 1 周します。 Rate が乗算されて周期が変わる点に注意してください。

以下は同期間隔の計算方法です。

syncInterval = (Rate) * (Tempo Upper) / (Tempo Lower);
Tempo Lower

テンポ同期が有効な時の同期間隔を表す分数の分母です。

Rate が乗算されて周期が変わる点に注意してください。

Rate

同期間隔に乗算される係数です。

Tempo UpperTempo Lower を変えずに LFO の同期間隔を変えたいときに使えます。

Pitch Amount

LFO によるピッチの変調量です。単位は半音です。

> Osc. Pitch の行のパラメータはオシレータ、 > FDN Pitch の行のパラメータは FDN への変調です。

Pitch Alignment

LFO のよるピッチの変調量は Alignment で指定された値の倍数だけを使います。例えば現在の変調量が 12.345 で Alignment が 6 とすると、実際の変調量は 12 になります。

Alignment が 0 のときは Amount の値を直接使います。

以下は変調量の計算方法です。

if (alignment == 0)
  modulation = amount * lfo;
else
  modulation = alignment * floor(lfo * amount / alignment + 0.5);

Envelope Wave

エンベロープのウェーブテーブルの波形です。

ウェーブテーブルの波形はすべてのボイスで共有されます。

Time [s]

ノートオンからエンベロープの終了までにかかる時間です。

エンベロープが終了すると変調量はすべて 0 になります。

Wave Interp.

エンベロープのウェーブテーブルの補間方法です。

LFO と同じく StepLinearPCHIP の 3 つの補間方法から選択できます。補間方法の詳細は LFO セクションの Wave Interp. を参照してください。

> LP Cut

FDN のローパスフィルタのカットオフ周波数への変調量です。単位は半音です。

> HP Cut

FDN のハイパスフィルタのカットオフ周波数への変調量です。単位は半音です。

> Osc. Pitch

オシレータのピッチの変調量です。単位は半音です。

> FDN Pitch

FDN のピッチの変調量です。単位は半音です。

> FDN OT +

FDN セクションの OT + への変調量です。

> FDN Pitch とは異なり、倍音に基づいたピッチの変調を行います。

ClangSynth と異なるパラメータだけをリストしています。

トレモロは振動する物体とマイクとの距離をざっくりと表現するために追加されました。変調信号はサイン波です。

Mix

入力信号とディレイを通過した信号を混ぜる比率です。

値が 0.0 のときバイパス、 1.0 のときディレイを通過した信号のみになります。

Depth

ディレイを通過した信号のゲインへの変調量です。

Delay [s]

ディレイ時間の最大値です。

Delay Offset

ディレイ時間への変調信号に加算される DC オフセットの量です。

Delay Offset の値は Misc.->Smoothing に加えてさらなる平滑化が行われています。追加された平滑化によって、値を変えるといつでもフランジャーのような効果を出すことができます。

Rate [Hz]

変調信号のサイン波の周波数です。

ClangSynth と比べるとピッチスライドが追加されている点が異なります。

Slide [s]

ピッチスライドにかかる時間です。

Slide Type

ピッチスライドの種類です。

2x Sampling

チェックを入れると 2 倍のオーバーサンプリングを有効にします。

よりシンバルらしい質感を得るためにはチェックを入れることを推奨します。ただし CPU 負荷は 2 倍になります。

チェックを外すと CPU 負荷は下がりますが、 FDN のディレイで行われる線形補間による高域の損失が大きくなるため、金属的な質感が損なわれます。外部のイコライザなどで高域を上げることで、いくらかは対処できます。

ClangCymbal ではオシレータがノイズとパルス列の混合に変更されています。

ノイズは以下の手順で生成されます。

  1. 素朴なパルス列を生成。
  2. 1 を積分器に通してディケイを付与。
  3. 2 を正規分布ノイズに乗算。

ここで積分器と呼んでいる部品は、理論的な積分器とは別物ですが似たような動作をします。

パルス列は、ノイズ生成で使われるものとは別に、BLIT アルゴリズムで生成されます。

Noise/Pulse

ノイズとパルス列を混ぜる割合です。

LP Cutoff [st.]

ローパスフィルタのカットオフ周波数です。

LP Q

ローパスフィルタの Q 値です。

デフォルト値の 0.7071 を超えるとレゾナンスが目立ち始めます。

LP Key

音程に応じて LP Cutoff を変える量です。

LP Cutoff を 0 、 Q を最大、 LP Key を 1 にすると、発振によってサイン波が出力されます。

Density [Hz]

ノイズとパルス列の密度です。

Density の値を Tuning->A4 と同じにした上で、 Density Key を 1.0 にすると鍵盤上の音程と一致させることができます。

Density Key

音程に応じて Density を変える量です。

Noise Decay

1 回のノイズが減衰する時間です。

Noise Decay の値が小さいときは、 Noise/Pulse の値が 0 でもパルス列に近い音になります。ノイズ生成器で使われているパルスはアンチエイリアシングが行われていないので質感の異なった音が出ます。

Bounce

AD エンベロープの信号が小さくなるほど、パルスが現れる間隔を短くする効果の量です。値が 0.0 のときに無効、 1.0 のときに効果が最大になります。

力を入れずにスティックを打面に落としたときの、跳ね返りを表現するときに使えます。

Bounce Curve

Bounce 効果の曲線を変えるパラメータです。

値が大きいほど 1 回の跳ね返りにかかる時間が短くなります。

Jitter

パルスが現れる間隔のランダムさです。

Amp. Rand.

ノイズ生成器のパルスの振幅のランダムさです。

ClangSynth とは異なり、各フィルタのパラメータを個別に変えることができます。より柔軟な設定ができますが、 CPU 負荷も上がっています。

Cutoff Slope

倍音の次数に比例してカットオフ周波数を増やす、あるいは減らす量です。

Q Slope

倍音の次数に比例して Q を増やす、あるいは減らす量です。

LP/HP Cut Offset [st.]

CutoffCutoff Slope から計算されたフィルタのカットオフ周波数へと、さらに加算される値です。

コントロールの左が低次、右が高次の倍音と対応します。ただし、クロスフィードバックの影響で、高次の倍音が低い周波数に、あるいは低次の倍音が高い周波数に影響を及ぼすことがあります。

LP/HP Q Offset

QQ Slope から計算されたフィルタの Q 値へと、さらに加算される値です。

Cut Offset と同様に、コントロールの左が低次、右が高次の倍音と対応します。

> Jitter

Oscillator->Jitter への変調量です。

> Noise/Pulse

Oscillator->Noise/Pulse への変調量です。

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

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

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