Update: 2020-06-15
LightPadSynth はピッチ変調を無くして補間を線形補完に変えた CubicPadSynth の軽量版です。ピッチ変調ができなくなった代わりに、各ボイスにディレイを追加しています。
LightPadSynth を使うには CPU が AVX 以降の SIMD 命令セットをサポートしている必要があります。
パッケージには次のビルドが含まれています。
Mac を持っていないので、 macOS ビルドはテストできていません。もしバグを見つけたときは GitHub のリポジトリに issue を作るか、 ryukau@gmail.com
までメールを送っていただければ対応します。
Linux ビルドは Ubuntu 18.0.4 でビルドしています。また REAPER 6.03 で動作確認を行いました。 Bitwig 3.1.2 では GUI が真っ黒になるバグがあるようです。
名前が .vst3
で終わるディレクトリを OS ごとに決められた位置に配置してください。
/Program Files/Common Files/VST3/
に配置します。$HOME/.vst3/
に配置します。/Users/$USERNAME/Library/Audio/Plug-ins/VST3/
に配置します。DAW によっては上記とは別に VST3 をインストールできるディレクトリを提供していることがあります。詳しくは利用している DAW のマニュアルを参照してください。
解凍して出てきたディレクトリを OS ごとに決められた位置に配置すると使えるようになります。
/Users/$USERNAME/Documents/VST3 Presets/Uhhyou
$HOME/.vst3/presets/Uhhyou
/Users/$USERNAME/Library/Audio/Presets/Uhhyou
プリセットディレクトリの名前はプラグインと同じである必要があります。 Uhhyou
ディレクトリが無いときは作成してください。
プラグインが DAW に認識されないときは C++ redistributable をインストールしてみてください。インストーラは次のリンクからダウンロードできます。ファイル名は vc_redist.x64.exe
です。
Ubuntu 18.0.4 では次のパッケージのインストールが必要です。
もし DAW がプラグインを認識しないときは、下のリンクの Package Requirements
を参考にして VST3 に必要なパッケージがすべてインストールされているか確認してみてください。
REAPER の Linux 版がプラグインを認識しないときは ~/.config/REAPER/reaper-vstplugins64.ini
を削除して REAPER を再起動してみてください。
初回設定時は手動で次のファイルを作成してください。
/Users/ユーザ名/AppData/Roaming/UhhyouPlugins/style/style.json
。$XDG_CONFIG_HOME/UhhyouPlugins/style/style.json
。
$XDG_CONFIG_HOME
が空のときは $HOME/.config/UhhyouPlugins/style/style.json
。/Users/$USERNAME/Library/Preferences/UhhyouPlugins/style/style.json
。既存の色のテーマを次のリンクに掲載しています。 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
以外の文字を使わないでください。
以下は設定できる色の一覧です。設定に抜けがあるとデフォルトの色が使われます。
fontPath
: フォント (*.ttf) の絶対パス。VST 3 版では実装されていません。foreground
: 文字の色。foregroundButtonOn
: オンになっているボタンの文字の色。 foreground
か boxBackground
のいずれかと同じ値にすることを推奨します。foregroundInactive
: 非アクティブなタブの文字の色。background
: 背景色。xboxBackground
: 矩形の UI 部品の内側の背景色。border
: 縁の色。borderCheckbox
: チェックボックスの縁の色。unfocused
: つまみがフォーカスされていないときの色。highlightMain
: フォーカスされたときの色。スライダの値の表示にも使用されます。highlightAccent
: フォーカスされたときの色。一部のプラグインをカラフルにするために使用されます。highlightButton
: ボタンがフォーカスされたときの色。highlightWarning
: 変更に注意を要する UI がフォーカスされたときの色。overlay
: オーバーレイの色。overlayHighlight
: フォーカスを示すオーバーレイの色。操作できる箇所を右クリックすると DAW によって提供されているコンテキストメニューを開くことができます。
つまみとスライダーでは次の操作ができます。
Octave
、 Seed
などで使われている数値スライダーでは、上記に加えて次の操作ができます。
Wavetable タブの Gain
, Width
, Pitch
, Phase
と Main タブの LFO Wave
で使われている青い縦棒が並んだコントロール (BarBox) ではショートカットが使えます。ショートカットは BarBox を左クリックしてフォーカスすると有効になります。フォーカス後にマウスカーソルを BarBox の領域外に移動させると、ショートカットが一時的に無効になります。ショートカットによって変更されるパラメータはカーソルの位置によって変更できます。 Information タブを開くとショートカットの一覧を見ることができます。
入力 | 操作 |
---|---|
Ctrl + 左ドラッグ | デフォルト値にリセット |
Shift + 左ドラッグ | 素朴な描画 (フレーム間の補間が無効) |
ホイールドラッグ | 直線の描画 |
a | 符号を交互に入れ替え |
d | すべての値をデフォルト値にリセット |
D | 最小値・中央値・最大値の切り替え |
e | 低域の強調 |
E | 高域の強調 |
f | ローパスフィルタ |
F | ハイパスフィルタ |
i | 値の反転 (最小値を保存) |
I | 値の反転 (最小値を 0 に設定) |
n | 最大値を 1 に正規化 (最小値を保存) |
N | 最大値を 1 に正規化 (最小値を 0 に設定) |
p | ランダムに並べ替え |
r | ランダマイズ |
R | まばらなランダマイズ |
s | 降順にソート |
S | 昇順にソート |
t | 少しだけランダマイズ (ランダムウォーク) |
T | 少しだけランダマイズ (0 に収束) |
z | アンドゥ |
Z | リドゥ |
, (Comma) | 左に回転 |
. (Period) | 右に回転 |
1 | すべての値を低減 |
2-9 | インデックスが 2n-9n の値を低減 |
いくつかの BarBox の下にはスクロールバーがついています。細かい調整を行うときはスクロールバーの左右のハンドルを 左ドラッグ で動かすことで表示範囲を変更できます。スクロールバーでは次の操作が行えます。
Refresh LFO
あるいは Refresh Table
ボタンを押すと音が止まります。発音中のノートも全て停止します。
各 MIDI ノートに対応する 128 の帯域制限されたウェーブテーブルが生成されます。 128 という数字は MIDI ノート番号の値の範囲から来ています。
チューニングがずれているときは、セント値を切り捨てたインデックスのウェーブテーブルが使われます。例えば MIDI ノート番号が 60 、チューニングが -20 セントのときは floor(60 - 0.20)
よりインデックス 59 のウェーブテーブルが使われます。
言い換えれば、チューニングがずれているときはナイキスト周波数より少し低い周波数で帯域制限されることがあります。
図が小さいときはブラウザのショートカット Ctrl + マウスホイール や、右クリックから「画像だけを表示」などで拡大できます。
図で示されているのは大まかな信号の流れです。実装と厳密に対応しているわけではないので注意してください。
音量エンベロープのパラメータです。
A
(Attack) : 鍵盤を押した瞬間から最大音量になるまでのアタック時間。D
(Decay) : 最大音量からサステイン音量になるまでのディケイ時間。S
(Sustain) : アタックとディケイが終わった後に鍵盤を押し続けているときのサステイン音量。R
(Release) : 鍵盤から指を離したあとに音量が 0 になるまでのリリース時間。音量を変更します。
素朴な 3-pole ローパスフィルタです。
フィルタのカットオフ周波数です。
フィルタのレゾナンスです。最大にすると音量が大きくなるので注意してください。
右いっぱいに回すと、カットオフ周波数がノートの音程と同じになります。左いっぱいに回すと音程に関わらず Cutoff
で設定されたカットオフ周波数を使います。
フィルタのカットオフ周波数を変調するエンベロープのパラメータです。 Amount
は Cutoff
への変調量です。
全体の音の高さを変更します。
Octave
: オクターブSemi
: 半音Milli
: 半音の 1 / 1000 。 1 / 10 セント。音律を変更します。
ET
は Equal Temperature (平均律) の略です。 ET
が 12 のときは 12 平均律となります。 ET
を 12 よりも小さくすると無音になる範囲が増えるので注意してください。
A4 [Hz]
は、音程 A4 の周波数です。
ユニゾンに使うボイスの数です。
Misc.
の nVoice
を増やすことで nUnison
が大きいときに起こるリリースの途切れを減らすことができますが、引き換えに動作が重くなります。
Detune
はユニゾンに使われているボイスのピッチをずらす量です。
Random Detune
のチェックを入れると、ピッチがずれる量がノートオンごとにランダムに変わるようになります。
random = RandomDetune ? rand() : 1
detune = pitch * (1 + random * unisonIndex * Detune)
ユニゾンに使われているボイスの音量をランダムに変更する量です。
ユニゾンに使われているボイスの位相をランダムに変更する量です。
Phase セクションの Reset
にチェックが入っていないとき、この値は無視されます。
Spread
はユニゾンの左右の広がりの量です。
Spread Type
でボイスのピッチに応じたパンの割り当て方を選択できます。
Alternate L-R
: Ascend L -> R
と Ascend R -> L
を交互に変更。Alternate M-S
: HighOnMid
と HighOnSide
を交互に変更。Ascend L -> R
: 左から右に向かってピッチが上昇。Ascend R -> L
: 右から左に向かってピッチが上昇。HighOnMid
: 端から中央に向かってピッチが上昇。HighOnSide
: 中央から端に向かってピッチが上昇。Random
: ランダムに生成したパンを割り当て。偏ることがあります。RotateL
: ノートオンごとに割り当てを左に回転。RotateR
: ノートオンごとに割り当てを右に回転。Shuffle
: 均一に並べたパンをランダムに割り当て。オシレータの初期位相です。
チェックを入れると、ノートオンのたびにオシレータの位相を Phase
で指定した値にリセットします。
チェックを入れると、ノートオンごとに位相をランダマイズします。 Phase
で指定した値がランダマイズの範囲になります。
特定の値を変更したときに、変更前の値から変更後の値に移行する時間(秒)です。
Smooth
と関連するパラメータのリストです。 *
はワイルドカードです。
Gain
S
Cutoff
S
Amount
KeyFollow
Mix
Feedback
Attack
Semi
Milli
Tempo
Multiply
Amount
Lowpass
Phase
最大同時発音数です。値を小さくすると CPU 消費が減ります。
乱数のシード値です。この値を変えると生成される乱数が変わります。
Main
タブと Wavetable
タブでは異なる乱数列が使われています。
フィルタ出力とディレイ出力を混ぜる比率です。
ディレイのフィードバックです。右に回すと正のフィードバック、左に回すと負のフィードバックがかかります。
フィルタからの出力をディレイに入力するときに掛け合わされるゲートのアタック時間です。
ノートの周波数から相対的に決められるディレイ時間です。次の式で計算されます。
delayTime = 1 / (noteFreq * pow(2, (semi + 0.001 * milli) / 12))
LFO の周波数をテンポに応じた形で指定します。 Tempo
の下の数字が音符の長さ、上の数字が音符の数です。例えば上が 6 、下が 8 なら 8 分音符の 6 個分の長さが LFO の 1 周期になります (6 / 8 拍子)。
Multiply
は Tempo
から計算された周波数に掛け合わされる値です。
// (60 秒) * (4 拍子) = 240 。
lfoFrequency = Multiply * (BPM / 240) / (TempoUpperNumeral / TempoLowerNumeral)
LFO でピッチを変調する量です。
LFO にかけるローパスフィルタのカットオフ周波数を変更します。
LFO のウェーブテーブルの補間の種類です。
現在の LFO Wave
のパラメータに基づいて LFO のウェーブテーブルを更新します。
ウェーブテーブルの更新中は音が止まるので注意してください。発音中のノートも全て停止します。
LFO の波形です。
プロファイルの高さです。
プロファイルの幅です。
プロファイルの周波数にかけ合わせる値です。
プロファイルの位相をランダマイズする量です。
ウェーブテーブルのレンダリング時の基本周波数です。この値が小さいとマスターピッチのチューニングが狂うことがあるので注意してください。
プロファイルの周波数を変更します。
profileFrequency = mod(
BaseFreq * profileIndex * overtonePitch * Multiply,
440 * pow(2, (Modulo - 69) / 12)
)
スペクトラムを周波数軸に沿って拡大・縮小するスケーリング係数です。
スペクトラムを左右にシフトする量です。
Comb
の値が 1 以上のとき、プロファイルをくし状に変形します。値はくしのすき間の間隔です。
Shape
の値を指数として、プロファイルの形をべき乗によって変更します。
shapedProfile = powf(profile, shape);
チェックを入れると、プロファイル内での位相を均一にします。
乱数のシード値です。この値を変えると生成される乱数が変わります。
Main
タブと Wavetable
タブでは異なる乱数列が使われています。
1 つのウェーブテーブルの大きさです。 2^10
から 2^21
の範囲の 2 のべき乗の値を選択できます。
()
で表示された値は全てのウェーブテーブルを合わせたバイト数です。バイト数は次の式で計算できます。
bytes = 4 * 128 * BufferSize
倍音コントロールの Gain
をべき乗する値です。
profileGain = pow(Gain, Gain^)
倍音コントロールの Width
にかけ合わせる値です。
profileWidth = Width * (Width*)
現在の Wavetable タブのパラメータに基づいてオシレータのウェーブテーブルを更新します。
ウェーブテーブルの更新中は音が止まるので注意してください。発音中のノートも全て停止します。
LightPadSynth のライセンスは GPLv3 です。 GPLv3 の詳細と、利用したライブラリのライセンスは次のリンクにまとめています。リンクが切れているときは ryukau@gmail.com
にメールを送ってください。
VST is a trademark of Steinberg Media Technologies GmbH, registered in Europe and other countries.