はじめてのVST3.6プラグインの作り

VST3プラグインを作成するための手順を記載しています。ここで使用しているVST SDKは3.6.8になりますがおそらく最新のバージョンでも対応しております。
なお、ほぼ独学ですので間違いがあるかもしれませんのでご了承ください。

VSTとは? VSTとその開発についての概要を説明しています。
VST3開発環境の準備 VST3.6における開発環境の準備と基本ライブラリの作成を記載しています。
VST3プロジェクトの作成 VST 3.6開発用のVisual Studioプロジェクト作成方法を記載しています。
(補足)サンプルソースファイルのビルド方法 各説明ページのサンプルソースコードをコンパイル・ビルドしてVST3プラグインを作成する方法を記載しています。
最小構成のVST3 最小構成のVST3プラグインを作成する方法を記載しています。
VST3のバスについて VST3でのバスという概念について記載しています。
パラメータ実装方法1 最小構成のVST3プラグインは音声処理を行えるだけでした。
実際のVST3プラグインでは、何らかの操作・コントロールをすることができます。今回は操作をするための基本となるパラメータを実装しています。
パラメータ実装方法2 パラメータ実装方法1で実装したパラメータは「0.0~1.0」しか表示できないので、
それ以外(例えば「10~100」や文字列のリストなど)を表示するパラメータを実装する方法を記載しています。
パラメータ実装方法3 パラメータクラスを継承して自作のパラメータクラスを作成します。
「フィルタのカットオフ周波数」などで利用するスライダーの位置と出力の関係が線形でないパラメータを実装する方法を記載しています。
パラメータの保存方法 パラメータ実装方法1~3で追加したパラメータはホスト(DAWなど)を終了すると初期化されてしまいます。
終了時に保存し、次回起動時にデータが読み込まれるようパラメータを保存・読込する方法を記載しています。
MIDIメッセージの受取1 MIDIのNote On、Note Offメッセージを受け取る方法の記載しています。簡単なモノフォニックシンセサイザーを作成しています。
MIDIメッセージの受取2 MIDIのControl Change、Pitch Bendなどのメッセージを受け取る方法の記載しています。
ツールを使ったVST GUIの作成方法 Inline UI Editor for VST3というツールを使ってVST GUIを作成する方法を記載しています。
最小構成のVST GUIコード 最小構成のVST GUIを作成する方法を記載しています。
VST GUIコードでのつまみ(ノブ)などの実装方法 最小構成のVST GUIではウィンドウが開くだけで何も操作できませんでした。
ここではつまみ(ノブ)やスライダーを追加し、パラメータを操作する方法を記載しています。

TIPS、一覧表、その他

※リンクがないものは記載予定のものです。

カテゴリ タイトル 概要
TIPS 音声処理クラス関連 バイパス処理について バイパス処理についてです
サイレンス処理について サイレンス処理についてです
テンポの取得 ホストアプリ(DAWなど)からテンポを取得する方法です
再生状態の取得 ホストアプリ(DAWなど)から再生状態かどうかの情報を取得する方法です
再生位置の取得 ホストアプリ(DAWなど)から再生位置を取得する方法です
パラメータ情報のフィードバック コントローラ操作クラスへパラメータ情報をフィードバックする方法です。
ポリフォニックシンセサイザー サンプルコード ポリフォニックシンセサイザーのサンプルコードです。解説はありません。
パラメータ操作クラス
GUIクラス関連
On/Offボタンの実装 VST GUIでクリックするごとにオンとオフを切り替えるボタンを実装する方法です
キックボタンの実装 VST GUIでクリックした瞬間だけオンになるボタンを実装する方法です
つまみ(ノブ)の実装 VST GUIで値を操作できるつまみ(ノブ)を実装する方法です
アニメーションつまみ(ノブ)の実装 VST GUIで値によって画像が変わるつまみ(ノブ)を実装する方法です
縦型スライダーの実装 VST GUIで値が操作できる縦型のスライダーを実装する方法です
 縦型スライダーのスタイル変更 縦型スライダーのハンドル操作を逆の方向にする方法です。
(ハンドルが上にある時に0.0、下にある時に1.0)
横型スライダーの実装 VST GUIで値が操作できる横型のスライダーを実装する方法です
 横型スライダーのスタイル変更 横型スライダーのハンドル操作を逆の方向にする方法です。
(ハンドルが左にある時に0.0、右にある時に1.0)
縦型スイッチの実装 VST GUIでクリックごとに値が切り替わる縦型スイッチを実装する方法です
横型スイッチの実装 VST GUIでクリックごとに値が切り替わる横型スイッチを実装する方法です
テキストラベルの実装 VST GUIで文字列を表示するラベルを実装する方法です
テキストエディットの実装 VST GUIで文字列を入力するための入力欄を実装する方法です
 入力された文字列を数値にする方法 テキストエディットに入力された文字列を数字にしてパラメータに反映させる方法です
コンボボックスの実装 VST GUIでリストから文字列を選択するコンボボックスを実装する方法です
チェックボックスの実装 VST GUIでチェックボックスを実装する方法です
複数コントロールの同期 VST GUIで一つのコントロールを動かした時、別のコントロールも動くようにする方法です
コントロールの定期更新 VST GUIでタイマーを使い定期的にコントロールの描画を行う方法です
UIの値を数字で表示 VST GUIでノブ(つまみ)やスライダーなどのコントロールの値を表示する方法です
任意のフォントの利用 VST GUIでテキストラベルやコンボボックスなどで任意のフォントを利用する方法です
「ファイルを開く」ダイアログの実装 VST GUIで「ファイルを開く」ダイアログを表示させる方法とファイルパスを取得する方法です。
一覧 VSTプラグインのカテゴリ一覧 生成関数で指定できるVSTプラグインのカテゴリ一覧です
MIDIコントロールチェンジの定義一覧 VST SDK3.6で定義されたMIDIコントロールチェンジの一覧です
VST GUI 定義済みフォント一覧 VST GUIのテキストラベルなどで使用する定義済みフォントの一覧です
VST GUI 定義済みカラー一覧 VST GUIで文字や背景色として使う色の定義一覧です
エフェクター エフェクターの実装例 ディストーションなどのエフェクターの簡単な実装例です
簡単なデジタルフィルタの実装 デジタルフィルターの実装例です。ローパスフィルタやノッチなどがあります。
ソースコードはこちらです。 → 簡単なデジタルフィルタのサンプルコード
リングバッファについて ディレイやコーラスなどで必要なリングバッファの実装例です。
その他 VST SDKの各バージョンのリンク VST SDKの各バージョンへのリンクです。いつ削除されるかはわかりません。
VST 3.6.10以降のファイル・フォルダ構成 VST 3.6.10以降で.vst3ファイルをインストールする場所と構成についてです。
Visual Studio 2013以前を使用する場合 開発環境にVisual Studio 2013以前を使用する場合の注意点です。
試したわけではありません。結果をご報告をいただけるとありがたいです。

質問は各コンテンツページや掲示板Twitterでいただけばとおもいます。

掲示板
■Twitterアカウント:@vstcpp   URL:https://twitter.com/vstcpp