Update: 2024-09-28
MembraneSynth は膜を張った打楽器のような音がでるシンセサイザです。バスドラムやタムタムのような低めの打楽器の音が得意ですが、自己変調による発振によって変な音を作ることもできます。
full
- VST 3 をダウンロード (github.com) macOS
- VST 3 をダウンロード (github.com) 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
ごとに決められた位置に配置してください。
/Program Files/Common Files/VST3/
に配置します。$HOME/.vst3/
に配置します。/Library/Audio/Plug-ins/VST3/
あるいは
/Users/$USERNAME/Library/Audio/Plug-ins/VST3/
に配置します。DAW によっては上記とは別に VST3 をインストールできるディレクトリを提供していることがあります。詳しくは利用している DAW のマニュアルを参照してください。
注意: プリセットの無いプラグインもあります。
プリセットはページの最上部のリンクからダウンロードできるプラグインパッケージに含まれています。以下はプリセットのインストール手順です。
presets
ディレクトリ内の Uhhyou
ディレクトリを OS ごとに決められたディレクトリに配置。以下は OS ごとのプリセットの配置先の一覧です。
/Users/$USERNAME/Documents/VST3 Presets
$HOME/.vst3/presets
/Users/$USERNAME/Library/Audio/Presets
プリセットディレクトリの名前はプラグインと同じである必要があります。配置先のディレクトリが無いときは作成してください。
プラグインが 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
されていないので削除する必要があるかもしれません。
Contents/Resources/Documentation
Contents/x86_64-linux
Contents/x86_64-win
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/
のいずれか使っていなかったほうに変えてみてください。
上記の方法がすべて上手くいかなかったときは以下の手順を試してみてください。
sudo spctl --master-disable
を実行。上記の手順を実行するとシステムのセキュリティが弱くなるので注意してください。元に戻すには以下の手順を実行してください。
sudo spctl --master-enable
を実行。codesign
の適用注意 この節の内容は macOS
パッケージには関連しないと考えられますが未検証です。 (GitHub の
issue)
full
パッケージを利用する場合は以下のコマンドを適用することで利用できるかもしれません。
sudo codesign --force --deep -s - /path/to/PluginName.vst3
codesign
の利用には Xcode
のインストールが必要となるかもしれません。
初回設定時は手動で次のファイルを作成してください。
/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
にコピペして使ってください。
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"
}
以下はフォントオプションの一覧です。
fontFamily
: フォントファミリ名。fontBold
: ボールドスタイル (太字) を
true
で有効、 false
で無効。fontItalic
: イタリックスタイル (斜体) を
true
で有効、 false
で無効。カスタムフォントを使用するには、プラグインディレクトリの
*.vst3/Contents/Resources/Fonts
に *.ttf
ファイルを配置します。
注意: fontFamily
、
fontBold
、 fontItalic
で設定したフォントファミリ名とスタイルの組み合わせが
*.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
以外の文字を使わないでください。
以下は設定できる色の一覧です。設定に抜けがあるとデフォルトの色が使われます。
foreground
: 文字の色。foregroundButtonOn
:
オンになっているボタンの文字の色。 foreground
か
boxBackground
のいずれかと同じ値にすることを推奨します。foregroundInactive
:
非アクティブなタブの文字の色。background
: 背景色。boxBackground
: 矩形の UI 部品の内側の背景色。border
: 縁の色。borderCheckbox
: チェックボックスの縁の色。borderLabel
:
パラメータセクションのラベルの左右の直線の色。unfocused
:
つまみがフォーカスされていないときの色。highlightMain
:
フォーカスされたときの色。スライダの値の表示にも使用されます。highlightAccent
:
フォーカスされたときの色。一部のプラグインをカラフルにするために使用されます。highlightButton
:
ボタンがフォーカスされたときの色。highlightWarning
: 変更に注意を要する UI
がフォーカスされたときの色。overlay
: オーバーレイの色。overlayHighlight
:
フォーカスを示すオーバーレイの色。パラメータが割り当てられているコントロールの上で 右クリック すると、 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 の下にはスクロールバーがついています。細かい調整を行うときはスクロールバーの左右のハンドルを 左ドラッグ で動かすことで表示範囲を変更できます。スクロールバーでは次の操作が行えます。
音量の振れ幅が大きいので MembraneSynth の後に必ずリミッタを挿入することを推奨します。
以下の条件がそろったときに発振するおそれがあります。
Modulation -> Amount
が 0 より大きい。Interp. Rate
が 0 より大きい。Envelope
が無効。発振はドローンや効果音を作るときには使えますが、打楽器の音を出したいときは問題となります。対策として、
Envelope
を有効にすることで発振をいくらか防ぐことができます。
図が小さいときはブラウザのショートカット Ctrl + マウスホイール や、右クリックから「画像だけを表示」などで拡大できます。
図で示されているのは大まかな信号の流れです。実装と厳密に対応しているわけではないので注意してください。
角かっこ [] で囲まれているのは単位です。以下は MembraneSynth のパラメータで使われている単位の一覧です。
また、ところどころに出てくる FDN という言葉はフィードバック・ディレイ・ネットワークという部品の略称です。詳細はブロック線図を参照してください。
出力のゲインです。
チェックを入れると Impact -> Amplitude
の値に応じてゲインを一定に保つように正規化します。
チェックを入れると 2 倍のオーバーサンプリングを有効にします。
Impact セクションでは、励起信号のパラメータが調整できます。ここでの励起信号とは、大まかにばちと打面の衝突を模倣する信号のことです。
励起信号の最大振幅です。大まかにばちと打面の衝突の強さを表しています。
励起信号の減衰時間です。大まかに衝突時に沈み込んだ打面が元の位置に戻ってくるまでにかかる時間を表しています。
Decay
の値が大きいほど低い周波数成分が強くなります。また、他のパラメータの設定によっては
Decay
がある値より大きいときに、音のざらついた質感が消えることがあります。
励起信号を FDN
に分配するときの偏りを与えるパラメータです。大まかに打面の中央から縁
Position
が 0 のときは打面の中央、 1
のときは縁を表すはずだったのですが、今回の実装ではあまり大きく音が変わりません。
Tuning セクションでは DAW から送られてくるノートイベントと、シンセサイザ内部のピッチの対応を設定します。
MembraneSynth の癖として、すべての音程が正確に合うことはない点に注意してください。音程を合わせる必要があるときは、一度レンダリングして、外部のサンプラーに読み込んで使うことを推奨します。
全体の音の高さを変更します。
Semitone
: 半音Cent
: 1 半音の 1 / 100 。音律を変更します。
Equal Temp.
は Equal Temperament (平均律) の略です。
Equal Temp.
が 12 のときは 12 平均律となります。
Equal Temp.
を 12
よりも小さくすると、内部的なピッチが高すぎるあるいは低すぎるために、音が変わらなくなる範囲が増えるので注意してください。
A4 [Hz]
は、音程 A4 の周波数です。
ピッチベンドの範囲です。
最後に与えられたノートのピッチへとスライドする時間です。
内部的にはフィルタのカットオフ周波数に置き換えられるので、正確な遷移時間を表しているわけではない点に注意してください。
チェックを入れると、ノートオンあるいはノートオフの時点でスライドを行います。
打楽器の音を作るときは、ピッチスライドを行わないほうが自然な音に聞こえるかもしれません。
Delay セクションでは、 FDN のディレイ間のフィードバックと、ディレイ時間に関するパラメータを設定できます。
ディレイ間のクロス・フィードバックの割合です。
値が大きいほうがクロス・フィードバックが増えて複雑な倍音が出ます。
FDN 全体のフィードバック量です。
Feedback
によって音の長さを設定できます。また
Feedback
を下げることで発振を抑えることができます。
ディレイ時間の係数を、弦の振動のモードと円形の膜の振動のモードとの間で切り替えます。
Shape
が 0 のときは係数が弦の振動のモードに応じて 1
倍、 2 倍、 3 倍、 … と設定されます。 Shape
が 1
のときは係数が円形の膜の振動のモードに基づいて 1 倍、 1.59 倍、 2.13
倍、 … と設定されます。
Modulation セクションでは、 FDN 内のフィードバック信号によってディレイ時間を短くする変調に関する設定ができます。
FDN 内のディレイ時間をフィードバックによって変調する量です。
Amount
が 0
でないときは、タムタムのようなピッチの下降が起こることがあります。
1 サンプルあたりのディレイ時間の変化を制限する値です。
Interp. Rate
の値が大きいほど変調が強くかかりますが、発振しやすくなるので注意してください。
変調されていないディレイ時間からの割合で表された、変調の最大値です。
例えば Max Ratio
が 0.3
のときは、ディレイ時間が定常状態から 30%
以上短くなることはありません。
点灯させると変調エンベロープが有効になります。
変調エンベロープを有効にすると Interp. Rate
を時間とともに下げて発振を無理やり抑えることができます。打楽器の音だけが欲しいときは、常に有効にしておくことを推奨します。
変調エンベロープのサステイン時間です。発振しているときにサステインが長いと不自然な音になる傾向があります。
変調エンベロープのリリース時間です。発振しているときはリリースを短めに設定することで自然な音に近づきます。
Random セクションでは、ノートオンごとに行うランダマイズの設定ができます。
乱数のシード値です。
Seed
を変えると FDN
のフィードバック行列が変更されるので、クロス・フィードバックの質感が変わります。
FDN のフィードバック行列をノートオンごとにランダマイズする割合です。
ディレイ時間を決めるときの倍数にランダムに加算する値の大きさです。
Filter セクションでは、 FDN のフィードバック経路に用意されたフィルタの設定ができます。
ローパスフィルタ (LP) 、ハイパスフィルタ (HP) のカットオフ周波数です。
実のところ、ローパスフィルタではなく、ゲインを 0.5 (~= -6.02 dB) に固定したハイシェルフフィルタを使っています。 UI 上ではローパスフィルタとしたほうが分かりやすいと思ったので、このように表記しています。
ローパスフィルタ (LP) 、ハイパスフィルタ (HP) の Q 値です。
Q 値は変更しても大きく音が変わらないので、細かい調整を行いたいわけでなければ無視できます。ただし、以下の 2 つのレシピは発振を抑えたいときに役立つかもしれません。どちらも音の低い部分を下げる効果があります。
HP Q
の 0 番 (最も左) を下げる。HP Q
の 12 ~ 15 番 (右から 3 つ) を下げる。style.json
によりプラグインがクラッシュするバグを修正。foregroundInactive
の色を変更。processContext
が nullptr
であるために
Audacity で音が正しく出力されなかったバグを修正。bypass
パラメータは保持されるが、変更による効果はなくなった。virtual
を追加。Seed
変更時に乱数生成器をリセットするように変更。この変更により
Seed
変更時と、フルリセット時に同じ音が出るようになった。MembraneSynth のライセンスは GPLv3 です。 GPLv3 の詳細と、利用したライブラリのライセンスは次のリンクにまとめています。
リンクが切れているときは ryukau@gmail.com
にメールを送ってください。
VST is a trademark of Steinberg Media Technologies GmbH, registered in Europe and other countries.