Update: 2020-06-15
TrapezoidSynthは台形オシレータを使ったモノフォニックシンセサイザです。台形オシレータは PTR (Polynomial Transition Regions) という手法に基づいて作ったのですが、ピッチが高くなると逆にノイズが増える欠点があるので 8 倍のオーバーサンプリングをしています。コードを作るために 2 つの AM ピッチシフタを搭載しています。
パッケージには次のビルドが含まれています。
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 ごとに決められた位置に配置してください。
/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 によって提供されているコンテキストメニューを開くことができます。
SlideType
を Reset to 0
にすると極端に低い周波数が出るので、ハイパスフィルタをかけることを推奨します。
図が小さいときはブラウザのショートカット Ctrl + マウスホイール や、右クリックから「画像だけを表示」などで拡大できます。
図で示されているのは大まかな信号の流れです。実装と厳密に対応しているわけではないので注意してください。
ピッチを半音単位で変更します。
ピッチをセント単位で変更します。 100 セント = 1 半音です。
台形の両端の傾きです。
台形の上辺の長さです。 Pulse Width の略です。
ホワイトノイズでピッチを変調します。
Oscillator 1 の位相をフィードバックで変調します。
osc1Phase += Feedback * (osc1 + OscMix * (osc2 - osc1))
周波数を Overtone
倍にします。
Oscillator 1 の位相を Oscillator 2 の出力で変調します。
チェックを入れると鍵盤が押されるたびにエンベロープをリセットします。チェックが外れているときは、同時に押している鍵盤の数が 0 から 1 以上になったときだけエンベロープをリセットします。
アタック時間の秒数です。アタックは音が最大音量に到達するまでのエンベロープの区間です。
ディケイ時間の秒数です。ディケイはアタックが終わった後にエンベロープが減衰する区間です。
サステインの大きさです。サステインはディケイが終わったのエンベロープの出力の大きさです。
リリース時間の秒数です。エンベロープは、鍵盤から指を離した時点(ノートオフ)からリリース状態に移行して、出力が 0 になるまで減衰します。
エンベロープの特性を変更します。
出力音量です。
フィルタの次数です。 TrapezoidSynth では 1 次フィルタを 8 個直列につないでいます。 Order
の値によってフィルタから信号を取り出す位置を変更しています。
カットオフ周波数です。
レゾナンスの強さです。
フィルタのサチュレーションの強さです。
filterInput = tanh(Sat * (input + Res * filterOutput))
Filter Envelope による Cut
の変調量です。
鍵盤の高さによる Cut
の変調量です。
Oscillator 1 と Oscillator 2 をミックスした信号による Cut
の変調量です。
Filter Envelope の出力を使ってピッチをオクターブ単位で変調する量です。
Osillator 1 と Oscillator 2 の比率です。左いっぱいに回すと Oscillator 1 の音だけになります。
ピッチをオクターブ単位で変更します。
パラメータを変更したときに変更前の値から変更後の値に移行する秒数です。次のパラメータに影響します。
Drift
Slope
PW
(同名のパラメータすべて)Feedback
(同名のパラメータすべて)PM
Gain
(同名のパラメータすべて)Cut
Res
Sat
Env>Cut
Key>Cut
+OscMix
OscMix
>PM
>Feedback
>LFO
>Slope2
>Shifter1
Shifter1.Semi
Shifter1.Cent
Shifter2.Semi
Shifter2.Cent
Freq
Shape
>Pitch1
>Slope1
>PW1
>Cut
チェックを入れると鍵盤が押されるたびにエンベロープをリセットします。チェックが外れているときは、同時に押している鍵盤の数が 0 から 1 以上になったときだけエンベロープをリセットします。
モジュレーションエンベロープのアタック時間の秒数です。
モジュレーションエンベロープの特性です。
Oscillator2.PM
をモジュレーションエンベロープ 1 で変調します。
Oscillator1.Feedback
をモジュレーションエンベロープ 2 で変調します。
LFO.Freq
をモジュレーションエンベロープ 2 で変調します。
Oscillator2.Slope
をモジュレーションエンベロープ 2 で変調します。
Shifter 1 のピッチをモジュレーションエンベロープ 2 で変調します。
半音単位でピッチシフトの量を変更します。
セント単位でピッチシフトの量を変更します。
ピッチシフトした信号を足し合わせる大きさです。
LFO の波形の種類を次の 4 つから選択できます。
Sin
: サイン波です。 出力は Shape
乗されます。Saw
: 鋸歯波です。 Shape
によって三角波にもできます。Pulse
: 矩形波です。 Shape
によってデューティ比を変更できます。Noise
: ブラウンノイズです。 Shape
によってステップあたりの移動量を変更できます。LFO の周波数をテンポシンクします。
LFO の周波数です。
LFO の波形を変更します。
LFO による Oscillator 1 のピッチの変調量です。
LFO による Oscillator1.Slope
の変調量です。
LFO による Oscillator1.PW
の変調量です。
LFO による Filter.Cut
の変調量です。
ピッチスライドの種類を変更できます。
Always
: 常に最後に演奏されたノートのピッチからスライドします。Sustain
: 2 つ以上の鍵盤が同時に押されたときだけスライドします。Reset to 0
: 同時に押している鍵盤の数が 0 から 1 、あるいは 1 から 0 になるときは 0 Hz にスライドします。それ以外の場合は他の 2 つと同じようにスライドします。ピッチスライドにかかる時間です。
Oscillator 1 のスライド時間に対する Oscillator 2 のスライド時間の比率です。
Slide->Time
の値が無視されて、 Smooth
の値を使うようになっていたバグを修正。kFxInstrument
から kInstrumentSynth
に修正。TrapezoidSynth のライセンスは GPLv3 です。 GPLv3 の詳細と、利用したライブラリのライセンスは次のリンクにまとめています。
リンクが切れているときは ryukau@gmail.com
にメールを送ってください。
VST is a trademark of Steinberg Media Technologies GmbH, registered in Europe and other countries.