C++でVST作り

C++でVST作り

本サイトではこのサイトではVST/VSTiプラグイン(エフェクター、ソフトシンセ)を作成するための情報をメモしております。

【主なコンテンツ】

自作アプリ 自作VSTプラグイン 自作VSTプラグインを公開しております。
プログラミング情報 VST3.6プラグインの作り VSTプラグインを作成するための手順を記載しています。(SDK 3.6.13版)
簡単なデジタルフィルタ 極力高度な数学(Z変換、伝達関数 等)を使わずに簡単にデジタルフィルタを設計・実装できる方法を紹介しております。
エフェクター実装例 ディストーションやコーラス等のエフェクターの実装例を紹介しております。
SoundFontファイルの読み込み SoundFontファイルの読み込みと組み立てについて説明しております。
現在作成中です。

【その他】
■各コンテンツや掲示板Twitterにコメントに要望やご意見、応援をいただけるとうれしいです。 →掲示板

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

■Youtubeチャンネル:うつぼかずら URL:https://www.youtube.com/channel/UCDl-jNREvFXbLvmDbn-6dag

■本サイトは旧サイト(https://www39.atwiki.jp/vst_prog/)の編集パスワード紛失により移転したサイトとなります。

Visual Studio 2019でVST基本ライブラリをコンパイルできない不具合の回避策

Visual Studio 2019でVST基本ライブラリをコンパイルできない不具合の回避策

最新(2019年11月時点)のVisual Studio 2019でVST SDK 3.6.13の基本ライブラリをコンパイルできないという不具合が出ています。

原因は「public.sdk/source/vst/hosting/module_win32.cpp」でMicrosoftが非推奨とした「experimental/filesystem」を使用しているためです。
これにより、下記のエラーが発生しコンパイルできない状態になっています。

このエラーを回避するにはプリプロセッサ「_SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING」を定義する必要があります。

回避策1

一つ目の回避策は、「public.sdk/source/vst/hosting/module_win32.cpp」に直接定義する方法です。
もっと見る

MIDIノートオン・オフの出力

MIDIノートオン・オフの出力

VSTではMIDIメッセージを出力することができます。
これにより、MIDIエフェクトのようなものや音声信号からMIDIへの変換などを行うことができます。

ここでは、音声処理クラスからMIDIメッセージを出力する方法を説明いたします。

なお、MIDIメッセージの入力などについては下記をご参照ください。

MIDIメッセージの受取1 MIDIのNote On、Note Offメッセージを受け取る方法の記載しています。簡単なモノフォニックシンセサイザーを作成しています。
MIDIメッセージの受取2 MIDIのControl Change、Pitch Bendなどのメッセージを受け取る方法の記載しています。

サンプルでは、入力されたMIDIノートオン・オフメッセージそのまま出力するだけのものを作成しています。
まずは音声処理クラスのinitialize関数に出力用のEventBusを追加します。(「入力イベントバスの追加」とほぼ同じです。)
もっと見る

SoundFontプレイヤー Utsbox SF2 Playerを更新しました

自作VSTであるSoundFontプレイヤー – Utsbox SF2 Playerを更新いたしました。

SoundFontプレイヤー – Utsbox SF2 Player

SoundFontファイルの構成において、isngチャンクとINAMチャンクが欠損していても無視するよう修正をしております。

【参考】
isngチャンクとINAMチャンクはSoundFontの仕様上 必須となる項目なのですが、サウンドブラスター用の情報であるため、VSTでは使用する意味のないチャンクになります。
Utsbox SF2 Playerはこれらのチャンクがない場合、仕様に従いファイル構成エラーとしていたのですが、上記の通りVSTでは使用する意味のないチャンクのため、無視するよう仕様変更いたしました。

質問やご指摘はコメント欄や掲示板Twitterでいただけばとおもいます。

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

Githubでサンプルを公開してみました。

自分自身の勉強も兼ねてGithubでサンプルを公開してみました。
簡単ではありますが、コマンドを使わずにVisual Studio 2019でのビルド方法も記載しています。

https://github.com/Utsubo-Kazura/vst3sample

ソースコードについては本Webサイトに記載している内容とほぼ同じになります。

また、VST3.6についての情報は下記にもございます。

また、質問やご指摘はコメント欄や掲示板Twitterでいただけばとおもいます。

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

VST SDK 3.6.13が公開されました

VST SDK 3.6.13が公開されました。

参考→sdk.steinberg.net

変更点は下記のようです。(公式サイトとマニュアルからの翻訳ですが英語は自信がないです。)

  • インターフェイスの修正
    • プラグインのカテゴリとしてkInstrumentPianoが追加
  • CMake
    • Visual Studio 2019に対応
    • CMakeファイルについていくつかの修正を実施。
  • サンプルの追加・修正
    • HostChecker Plug-inサンプルでいくつかのチェック項目を追加
    • editorhostサンプルでいくつかのデバッグ出力を追加。
  • VST 3 Plug-in Test Hostの修正
    • IPlugInterfaceSupport・MPEをサポート
    • 同じプラグインのエディタを2つ開くことが可能に
  • その他の修正・改善の実施
    • AAX Wrapperのプリセット読み込み時にバイパス状態が上書きされる不具合を修正

VST3.6についての情報は下記にもございます。

また、質問やご指摘はコメント欄や掲示板Twitterでいただけばとおもいます。

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

VST内部での文字コードについて

VST内部での文字コードについて

VST SDKでは音声処理クラスパラメータ操作クラスVST GUIクラスでは扱っている文字コードが異なります。

音声処理クラスパラメータ操作クラスなどはUTF-16を使用しています。
(VST SDKドキュメントにあるSDK Helper Classesに関連するクラスがUTF-16を使います。)

一方でVST GUIクラスなどはUTF-8を使用しています。
(VST SDKドキュメントにあるVSTGUI 4に関連するクラスがUTF-8を使います。)

もっと見る