VST3プラグインの作成方法などを公開しています。ここで使用しているVST SDKは3.6.14になりますがおそらく最新のバージョンでも対応しております。
ここでは開発環境をWindowsとしていますが、VST SDK自体は複数のプラットフォームに対応していますので、本サイトの実装方法やTIPSなどは利用できると思います。
なお、ほぼ独学ですので間違いがあるかもしれませんのでご了承ください。(ご指摘いただけると助かります。)
はじめてのVST3プラグイン作り
VST3プラグインを作成するための手順を記載しています。
VSTとは? | VSTとその開発についての概要を説明しています。 |
VST3開発環境の準備 | VST 3.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ではウィンドウが開くだけで何も操作できませんでした。 ここではつまみ(ノブ)やスライダーを追加し、パラメータを操作する方法を記載しています。 |
VST3ホストアプリケーション作り
VST3ホストアプリケーション(VST3プラグインを読み込めるアプリ。以下VST3ホスト)を作成するための手順を記載しています。
「はじめてのVST3プラグイン作り」が一通り理解いただいていることを前提としております。 ※リンクがないものは記載予定のものです。
VST3ホストの開発環境と設定 | VST3ホストを作成するために必要な内容とVisual Studioプロジェクトの設定を記載しています。 |
VST3プラグインの読み込みと情報表示 | 簡単なVST3ホストを作成します。VST3プラグインファイルを読み込み、VST3プラグインの情報を取得・表示します。 |
音声処理クラスの作成と初期化 | 音声処理クラスのインスタンス作成と初期化について説明します。 |
音声処理クラスでの音声処理準備 | 作成した音声処理クラスで音声処理を実施するための準備(入出力設定やサンプルレート設定など)について説明します。 |
音声処理クラスでの音声処理 | 準備が完了した音声処理クラスで実際に音声処理を行う方法を説明します。 |
パラメータ操作クラスの作成と初期化 | パラメータ操作クラスのインスタンス作成と初期化について説明します。 |
パラメータ操作クラスからのパラメータ情報取得 | 作成したパラメータ操作クラスからパラメータの情報を取得する方法を説明します。 |
パラメータ操作クラスから音声処理クラスへのパラメータ変更の通知 | パラメータ操作クラスから音声処理クラスにパラメータ変更情報を通知する方法を説明します。 |
パラメータ操作クラスのUIの表示 | パラメータ操作クラスのUIを表示する方法を説明します。 |
音声処理クラス・パラメータ操作クラスの設定保存 | 音声処理クラス・パラメータ操作クラスの設定(パラメータ情報など)を保存する方法を説明します。 |
内容未定 | 内容未定 |
上記以外も更新予定はありますが、内容は未定となっております。
TIPS、一覧表、その他
VST3プラグインの作成に関するTIPSや定義されている変数の一覧などをまとめたものになります。 ※リンクがないものは記載予定のものです。
カテゴリ | タイトル | 概要 | |
---|---|---|---|
TIPS | 音声処理クラス関連 | バイパス処理について | バイパス処理についてです |
サイレンス処理について | サイレンス処理についてです | ||
テンポの取得 | ホストアプリ(DAWなど)からテンポを取得する方法です | ||
再生状態の取得 | ホストアプリ(DAWなど)から再生状態かどうかの情報を取得する方法です | ||
再生位置の取得 | ホストアプリ(DAWなど)から再生位置を取得する方法です | ||
パラメータ情報のフィードバック | コントローラ操作クラスへパラメータ情報をフィードバックする方法です。 | ||
MIDIノートオン・オフの出力 | MIDIノートオン・オフメッセージを出力する方法です。 | ||
ポリフォニックシンセサイザー サンプルコード | ポリフォニックシンセサイザーのサンプルコードです。解説はありません。 | ||
パラメータ操作クラス 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 GUIで「ファイルを開く」ダイアログを表示させる方法とファイルパスを取得する方法です。 | ||
一覧 | VSTプラグインのカテゴリ一覧 | 生成関数で指定できるVSTプラグインのカテゴリ一覧です | |
MIDIコントロールチェンジの定義一覧 | VST SDK3.6で定義されたMIDIコントロールチェンジの一覧です | ||
VST GUI 定義済みフォント一覧 | VST GUIのテキストラベルなどで使用する定義済みフォントの一覧です | ||
VST GUI 定義済みカラー一覧 | VST GUIで文字や背景色として使う色の定義一覧です | ||
エフェクター | エフェクターの実装例 | ディストーションなどのエフェクターの簡単な実装例です | |
簡単なデジタルフィルタの実装 | デジタルフィルターの実装例です。ローパスフィルタやノッチなどがあります。 ソースコードはこちらです。 → 簡単なデジタルフィルタのサンプルコード |
||
リングバッファについて | ディレイやコーラスなどで必要なリングバッファの実装例です。 | ||
その他 | VST内部での文字コードについて | VST SDKの内部で使われている文字コードです。UTF-8とUTF-16が混在しており注意が必要です。 | |
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