VST プラグインのプロトタイピングから検証までを MATLAB で ~ MATLAB の VST 生成機能を使う ~ データインスペクターでログ比較
まえがき
みなさんは信号処理系のプラグインを作る場合、プロトタイピングや検証はどうされてますか?
私は、JUCE や Wwise でプラグインを作る前に、まずは効果を MATLAB/Simulink で確認し、MATLAB で VST 化してリアルタイム検証を行っています。
今年の ADC でも、「最初に MATLAB で作ってから JUCE にする」って言ってた方がいましたね。
"super helpful" と。(--)(__)
Musical sound coding for cochlear implants - Shaikat Hossain
以下は、実際に MATLAB で VST を作り、JUCE 化した例です。
MATLAB で生成した VST の例
以下、実際の動作例を上げておきます。
Simulink 上でのデバッグ例
Reaper での動作例1
Reaper での動作例2
スタンドアローン版での単体動作例
VST 開発を MATLAB で行うメリット
MATLAB の Audio Toolbox は、VST プラグイン生成に対応しています。
もちろん生成された VST はネイティブですので高速動作します。
開発環境が MATLAB なので、とにかく簡単に作れてデバッグも便利です。
最短数分~で作れますし、信号処理部に MATLAB の関数が使えます。
MATLAB 上でデバッグができるので、グラフィカルなデバッグも簡単にできます。
メリットを上げると
・機能ブロックを繋ぐだけ(Simulink)なので思いついたらすぐ試せる、思考が止まらない
・圧縮フォーマットを含むマルチメディア・ファイル入出力可
・中程度の処理であればリアルタイムデバッグ可
・一部機能ライブラリ化による高速化も可
・瞬時にブロックを入れ替え・並列化して聞き比べ(Simulink)
・プログラミング不要なグラフィカル・デバッグ
・ステップ動作、逆転動作(Simulink)
・長年使われ続けている上に頻繁にアップデートされており(年2回メジャーアップデート+適宜マイナーアップデート)将来に渡って信頼性が高い
・(ちゃんとした)日本語版を含む公式ドキュメント・チュートリアルが充実している
JUCE 等に持って行くには MATLAB 固有の関数は使わないようにする必要がありますが、デバッグでスペクトルを見たりするのには便利ですし、とりあえずデバッグ不要な MATLAB 関数で組んでからブレイクダウンするのも効率的です。
特に Simulink であれば機能ブロック単位で C/C++ 等他の言語を用いることもでき、ブロック単位でのデバッグにも便利です。
プロライセンスであれば、MATLAB 関数を使っていても直接 JUCE プロジェクト生成が可能です。
生成できるのは、Windowsでは VST2(64/32bit)、VST3、Macでは AUv2、AUv3 です。
単体動作するスタンドアローン版は両 OS で生成可能です。
現時点ではまだ VST2 生成にも対応しています。
但し、VST 動作では制限事項もあります。
・VSTi 非対応
・グラフ出力不可
・タイム関数や Web アクセス関数等使用不可(これらを使った認証等が行えません)
・ファイル読み込み不可
・GUI のカスタマイズ制限(背景画像等、一部画像貼り付けは可能)
・プログラム内からの GUI 操作不可
・GUI コンポーネントは以下の7種類のみ
水平スライダー、垂直スライダー、ロータリーノブ、チェックボックス、ロッカーSW、トグルSW、ドロップダウンメニュー
・MIDI によるパラメータ操作不可
audioTestBench 上でのデバッグ時は可能ですが VST では未対応です
開発環境
MATLAB 本体以外に以下の Toolbox が必要です。
・DSP System Toolbox
・Signal Processing Toolbox
・Audio Toolbox
・(MATLAB Coder) ← JUCEプロジェクト生成には必要
これらがないと作れません。
最初の2つは "Audio Toolbox" の動作に必要なので、"Audio Toolbox" が動く状態ならVSTプラグインが作れると言うことになります。
MATLABでは、MATLABアプリは "MATLAB Compiler" 、コード生成及びネイティブアプリは "MATLAB Coder" がないと作れませんが、VSTは "Audio Toolbox" があれば作れます。ですので、"MATLAB Compiler/Coder" 製品自体がない MATLAB HOME ライセンス(非商用のみ)でも作ることができます。
VST 生成に必要な Toolbox を揃えると、Home 版で税込み 3万円ちょいです。
あると便利な Simulink も +5千円弱。
Simulink があると、ブロックを繋ぐだけでシミュレーションができますし、サイドチェインを使った VST のデバッグも可能です。
Scope や Spectrum Analyzer を繋げば、任意点での波形やスペクトルを見ながらのシミュレーションが可能です。
また、JUCE で日本語表示させる場合 urlencode する必要があります。Projucer にも変換ツールがありますが、MATLAB にも matlab.net.internal.urlencode 関数が用意されているので簡単に変換できます。
売り物だけあってインストールも一発、OSS等でありがちな一部のアップデートで全体が動かなくなるようなこともまずありません。
他の開発環境ではあり得ない程(日本語)公式ドキュメント・チュートリアルが充実していて、ユーザーコミュニティも活発でなぜか優しいです。
(オーディオ系は、日本語化されていない部分も多いですが・・)
MATLAB 専用の AI Chat も始まりました。
充実した公式ドキュメントがベースになっているので期待できます。
質問は日本語でも OK です。
サンプルコード
音量を変えるだけのプラグインなら、コードはこれだけです。
classdef VST_simple1 < audioPlugin
properties
inputGain = 1;
end
properties (Constant)
PluginInterface = audioPluginInterface(audioPluginParameter('inputGain'));
end
methods
function out = process(plugin,in)
out = in * plugin.inputGain;
end
end
end
生成は以下のようにします。
>> generateAudioPlugin VST_simple1 % VST2
>> generateAudioPlugin -vst3 VST_simple1 % VST3
>> generateAudioPlugin -au VST_simple1 % AUv2
>> generateAudioPlugin -auv3 VST_simple1 % AUv3
>> generateAudioPlugin -exe VST_simple1 % Standalone executable
例えば以下のようなパンを変えるだけのものであれば、30分程度で VST プラグインが作れると思います。
多少はデザインもいじれます。
Audio TestBench
デバッグ環境としては専用の Audio TestBench アプリが用意されており、このメニューからもプラグイン生成が可能です。
入力はオーディオファイルやオーディオデバイスの他に各種 SG も用意されており詳細設定もできます。
タイムスコープやスペアナ表示も可能ですが、動作が重いので通常の Simulink を使った方が良いかと思います。
Audio TestBench は MIDI も対応しているので、有線/無線での MIDI control も可能です。
VST のフィルターパラメータをスマホからワイヤレス操作
データインスペクター
Simulink では、ログを取ってまとめて見ることもできます。
モデルコンフィグレーションパラメータ(Ctrl+E)で「信号のログ」をチェックし、あとはログを取りたい信号線を選択して実行するだけです。
データインスペクターを起動して表示したい信号を選択します。オーディオ信号は列をオーディオチャネルとするフレーム信号として扱われるため、「フレームの変換」を選択します。
実行毎にログが取られるので、パラメータを変えた場合と比較することなどができます。
色やタイトルなどは、あとからこの画面で自由に編集できます。
参考記事
MATLAB で VST を開発する記事は過去にいくつか書いていますので、以下列挙しておきます。
また、去年の時点でまとめたものを Kindle でも出しています。
Unlimited 会員であれば無料でお読み頂けます。
MATLAB/Simulink 自体についてはこちらの記事をご参照ください。
MATLAB Home についてはこちら。
MATLAB/Simulink 自体は、まずは Mobile アプリ/Web アプリで無料で始められます。
(VST 生成や Audio device I/O の使用はサポートされていません)
あとがき
使用可能なコンポーネントもテキストウィンドウがないとか色々と制限はありますが、すぐ作れてデバッグも楽なのが特徴です。
プラグインだけでなく、組み込み系に持っていく場合なども、元を MATLAB で作っておけば融通が利きますし、アルゴリズム検証~インプリ~テストデータ作成・検証まで効率的に行えます。
論文等でもコードが載っていることの多い信頼の MATLAB、ユーザーは制御屋さんが圧倒的に多いイメージですが、実際に音を出し波形を見て開発できるので、オーディオの信号処理開発にもとても適しています。
毎年2回のメジャーアップデートがある MATLAB ですが、VST 関連はここ数年目立った機能アップデートがありません。(VST3、AUv3 対応はありました)
使う人が増えれば機能アップの要望も通りやすくなると思うので、みなさんもぜひ使って要望を上げてください! (-_☆)
タイトル画像モデル:綾夏
The title image was created using Adobe Generative Fill based on this picture.
この記事が気に入ったらサポートをしてみませんか?