C++でVST作り

C++でVST作り

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

【ご連絡】
このたび、VSTプラグイン開発の本を執筆させていただきました。
工学社様より2020年6月25日発売となっております。なお、誤記などについては工学社様の書籍サポートページにてご案内しております。

内容としてはC++を使って初めてVST開発をする方にむけたものとなっております。
本サイト「はじめてのVST3.6プラグインの作り」をベースに加筆し、応用的な部分を少し抑えた内容となっています。

 工学社様サイト → https://www.kohgakusha.co.jp/books/detail/978-4-7775-2108-1

【主なコンテンツ】

自作アプリ 自作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/)の編集パスワード紛失により移転したサイトとなります。

VST3ホスト開発02 – VST3プラグインの読み込みと情報表示

VST3プラグインの読み込みと情報表示

前回はVST3ホストを作成する際の開発環境準備やVisual Studioプロジェクトの作成について記載いたしました。
今回はVST3プラグインを読み込むプログラムの説明を実施します。

今回作成するプラグインは下記のとおりです。

  • VST3プラグインを読み込む
  • VST3プラグインの情報を表示する

実際に音声処理を行うまではもう少し手順がありますが、まずは情報表示するところまで実施いたします。

今回作成したVST3のソースファイルはこちらになります。→ vst3host01_20200802
なお、Visual Studioのプロジェクトは「コンソールアプリケーション」で作成しております。

VST3プラグイン読み込みの流れ

VST3プラグインを読み込んで利用できるようにするには、大きく下記の流れで読み込みと初期化を行います。
もっと見る

VST SDK 3.7が公開されました

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

参考→sdk.steinberg.net

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

  • 新しいドキュメントポータル
  • インターフェイス・フラグ等の修正
    • 下記のインターフェイスが追加
      • プラグイン用インターフェイス
        • IProcessContextRequirements
          ※IProcessContextRequirementsはVST SDK 3.7以降で実装する場合に必ず必要となる。
        • IParameterFunctionName
      • ホストアプリケーション用インターフェイス
        • IProgress
    • パラメータにkIsHiddenフラグが追加
      このフラグを設定すると、ホストでは表示されず、プラグイン以外から変更ができなくなる
    • 下記の定義済みスピーカーアレンジメントが追加
      • k90Cine, k91Cine (L R C Lfe Ls Rs Lc Rc Sl Sr)
      • k100Cine, k101Cine (L R C Lfe Ls Rs Lc Rc Cs Sl Sr)
      • k90_4, k91_4 (L R C Lfe Ls Rs Lc Rc Sl Sr Tfl Tfr Trl Trr)
      • k90_6, k91_6 (L R C Lfe Ls Rs Lc Rc Sl Sr Tfl Tfr Trl Trr Tsl Tsr)
    • オーディオバス用のフラグkIsControlVoltageが追加
  • ヘルパークラスの修正
    • VST2.xとの互換性のためにFXB/FXP形式の読込とFXB形式への書込関数を追加
    • MinGW-w64 GCCコンパイラでのコンパイルを修正
    • 新しくURLを標準のアプリで開くヘルパーを追加
  • ドキュメントの修正
    • MIDI 2.0 Pre-Note Controllersに関する記載が追加
    • MIDI 2.0のベロシティなどの解像度の増加とVST3での対応に関する記載が追加
  • CMAKEの修正
    • 新しいCMAKEファイルが追加
    • Windowsでパワーシェルを使ったフォルダ作成を管理者権限で行うよう修正
  • サンプルの修正
    • SyncDelayサンプルを追加。IProcessContextRequirementsを使用したサンプル
    • Pannerサンプルを追加。サブカテゴリーPlugType::kSpatialFxを使用したサンプルで、モノラルからステレオへ変換するサンプル。
    • HostCheckerサンプルで、kIsHiddenフラグ・IProgressインターフェイス・IParameterFunctionName・ Silent flagのチェックに対応
  • プラグインラッパーの修正
    • AAX/VST2ベースラッパーがVst::StateType::kProjectをセットしなかった不具合を修正
  • VST3PluginTestHostの修正
    • 新しいインターフェイス IProgress・IProcessContextRequirements・IParameterFunctionNameをサポート
    • 2つ以上のGUIインスタンスを表示するプラグインを終了するときにクラッシュする問題を修正
    • IMidiMappingに対応シングルコンポーネントのプラグインのサポートを修正
  • VST 3 Project Generator v1.0.0の追加
    • 簡単にVST3プロジェクトを生成するVST 3 Project Generatorを追加

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

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

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

VST3ホスト開発01 – VST3ホストの開発環境と設定

はじめに

「VST3ホスト開発」では、数回に分けてVST3ホストアプリケーション(VST3プラグインを読み込めるアプリケーション。以下 VST3ホスト)を作成する方法を記載いたします。

前提となる知識について

VST3プラグイン開発についてある程度ご理解いただいていることを前提としています。
VSTプラグインの作成方法が全く分からないという方は、一度 下記ページの「はじめてのVST3プラグイン作り」などをご確認いただくようお願いします。

  VST3プラグインの作り方

また、一部で音声の入出力やGUI(ウィンドウ)の表示など、プラットフォーム(「VST3ホスト開発」ではWindows)に依存する処理があります。
都度 概要については説明しますが、詳細については書籍やWebなどでご確認をお願いします。

作成方法の説明範囲について

「VST3ホスト開発」では特にVST3プラグインの読み込み方法とその扱い方を中心に説明しています。

VST3はVST-MAと呼ばれる規格に基づいて設計されていますが、この設計についてはほとんど説明いたしません。
VST SDKの内部の仕組みについても必要な範囲だけとなりますので、より理解を深めるためには下記のようなWebサイトやVST SDKマニュアルなどをご参照ください。

 VST3 ホストを作ろう ~目次~
 VST3ホストを作ろう!(公開用)
  ※ともに製作はhotwatermorningさんです。Twitter→https://twitter.com/hotwatermorning Webサイト→https://diatonic.jp/

また、VST3プラグインの読み込み方法とその扱い方を中心としているため、サンプルコードも極力 単純な処理だけを記載するようにしています。
サンプルをそのままアプリケーションとして利用するには不十分ですが、VST3プラグインをどう処理すればよいかがわかりやすいかと思います。

説明の方針について

基本的にVST3 SDKを使用した方法を説明いたします。
VST3 SDKにあるVST3ホスト用のクラスは、一部実装が不十分なところがあるようですが、その点については都度補足します。
そのうえで機能が不十分であれば、処理内容を確認の上、自分で実装いただくようお願いいたします。

VST3ホスト開発環境の準備

VST3ホストの開発環境の準備はVST3プラグインの準備と同じです。
下記のページを参考にしながら、「開発環境(Visual Studio)のインストール」「VST SDKのダウンロード」「VST SDK 3.6 基本ライブラリの作成」を実施してください。
もっと見る

ギターMIDIエフェクト – Utsbox MIDI Tool2

概要

Utsbox MIDI Tool2はギターのコードストロークを生成するギター音色用のMIDIエフェクトVSTプラグインになります。

下記のリンクよりダウンロードできます。

  Download→ Utsbox MIDI Tool2 v1.0

もっと見る

ギターMIDIエフェクト – Utsbox MIDI Tool1

概要

Utsbox MIDI Tool1はマルチティンバー音源向けのギターMIDIエフェクトです。
MIDIノートを1~6chに分離するとともに、Utsbox MIDI Tool1に割り当てたキースイッチを入力することで、簡単にピッチベンドやハンマリング・プリングオフなどを行うことができます。

下記のリンクよりダウンロードできます。

  Download→ Utsbox MIDI Tool1 v1.1

もっと見る

任意のフォントの利用

任意のフォントの利用

VST GUIにおいてテキストを表示させるコントロールのフォントを変更する方法を説明いたします。

なお、VST GUIの基本的な作成方法、テキストラベルコントロールの作成方法として下記をご理解いただいている前提で進めさせていただきます。

フォントを変更すると下記のようになります。

同様の手順でテキストエディットコンボボックスチェックボックス等のコントロールのフォントも変更可能です。

もっと見る