VST3プラグイン開発00 – VSTとは?

VSTとは?

VSTとは音楽制作ソフトウェア上で動かすエフェクターやデジタル楽器などのソフトウェアの規格です。
1996年にStenberg(音楽制作ソフトウェア Cubaseを開発した会社)がこの規格を発表し、多くの音楽制作ソフトウェアに採用されました。

このソフトウェア規格に基づいて作成されたプログラムはVSTプラグインやVSTiプラグインといわれています。
VSTプラグインは主にエフェクターを、VSTiプラグインはデジタル楽器を示しますが、どちらも略してVSTプラグインやVSTと呼ばれることが多く、上記規格ともあわせて混同してしまうこともあります。

用語 概要
VST 音楽制作ソフトウェア上で動かすエフェクターやデジタル楽器などのソフトウェアの規格。
VSTプラグイン VSTの規格に基づいて作成されたプログラムで主にエフェクターとして動作するもの。(VSTeと呼ばれる場合もある。)
VSTiプラグイン VSTの規格に基づいて作成されたプログラムでデジタル楽器て動作するもの。


VSTにはバージョン2(最新2.4)とバージョン3(最新3.7.1)の2つのバージョンがあります。(2020年12月 時点)
多くの音楽制作ソフトウェアはどちらのバージョンでも動かすことができますが、バージョン2.4はサポートが終了しており、新たに開発することができません。
今から開発を始めるのであればバージョン3を使用することになります。


VST/VSTiプラグインを作成するには?

VST/VSTiプラグインを作成するためにはC/C++でのプログラミング知識と音声信号処理に関する知識、開発のためのソフトウェアが必要となります。

VST/VSTiプラグインはC++言語で開発されることを前提としているため、C/C++でのプログラミング知識が必要となります。また、エフェクターやデジタル楽器では音声信号を扱うため音声信号処理に関する知識も必要です。
デジタル楽器を作成する場合はさらにMIDIやシンセサイザーの仕組み・原理などについても知っておく必要があります。

必要な知識について「どの程度の知識が必要か?」について下記に簡単にまとめました。
VST/VSTiプラグインを作成するにあたって、必ずしも高度な知識は必要ありません。

項目 キーワード 概要
C/C++プログラミング知識 配列とポインタ 音声データは配列に保存されることが多い。またそれらの配列を関数間での引き渡しすため、ポインタの理解が必要。
クラスの継承とオーバーライド VST/VSTiプラグインの開発では雛形のクラスを継承して作成するため、これらの理解が必要
音声信号処理の知識 音の基本知識・性質 周波数と音の高さや音圧(dB)、人間の可聴範囲などの理解が必要
AD/DA変換の基礎知識 AD/DA変換とは何か?やサンプリング周波数、ナイキスト周波数についての理解が必要

開発のために必要なソフトウェアにはC/C++開発環境とVST SDKがあります。
上記のとおり、VST/VSTiプラグインはC++言語での開発が前提のため、C/C++開発環境が必要となります。VST SDKはVST/VSTiプラグインを作成するための雛形(C++のクラス)が記載されたソースコード一式となります。

ソフトウェア 概要
C/C++開発環境 VSTに限らずプログラムを製作するためのソフトウェア。VST/VSTiプラグインはC++言語での開発が前提。
VST SDK SDKとはVST/VSTiプラグインを作成するための雛形(C++のクラス)が記載されたソースコード一式

まとめ

  • VSTとはStenberg社のエフェクター/デジタル楽器のプラグイン規格。この規格に沿って作られたプラグインをVST/VSTiプラグインという
  • VSTのバージョンは2とバージョン3の2種類があるが、今から開発を始めるのであればバージョン3になる。
  • VSTを開発するためには「C/C++開発環境」と「VST SDK」が必要。

最後に

VSTを開発するためについての概要を記載いたしました。
次回はVSTを開発するために必要な「C/C++」の開発環境であるVisudal Studioのダウンロード方法について記載いたします。

  次回→VST3開発環境の準備

VST3プラグイン作りの情報はこちらにもございます → はじめてのVST3プラグイン作り

ご指摘やご質問などがございましたら、コメント欄か掲示板Twitterでご連絡いただければと思います。

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


One thought on “VST3プラグイン開発00 – VSTとは?

  1. 自身でFMシンセサイザーを作ってみようとしましたが「’createInstance’:定義されていない識別子です。」とか、「’createInstance’: ‘Steinberg::Vst::MyVSTProocesseror’のメンバーではありません。」というエラーがfactory.cppのところで出ます。あなたのポリフォニックシンセサイザーのサンプルコードのfactory.cppをコピー&ペーストしてベンダーやURL、メールアドレス、MyVST_MyVSTNAMEのところの””内をFMsynthと書き換えただけなのに何が悪いのでしょう?

    1. muleさん

      書き込みありがとうございます。
      こちらでも試してみましたが、その定義を変更しただけではエラーは出ませんでした。

      音声処理クラスのクラス名を変えたのであれば、「Steinberg::Vst::MyVSTProocesseror」
      のMyVSTProocesseror部分を変更したクラス名に変えてみてください。

      少し情報が少なく、その他の原因が思い当たりません。

  2. 下記の通りのソースコードです。どこが悪いのでしょう?

    【管理者により削除】

    となっております。’createInstance’:定義されていない識別子です。」とか、「’createInstance’: ‘Steinberg::Vst::MyVSTProocesseror’のメンバーではありません。」というエラーがfactory.cppのところで出ます。何が悪いのでしょう?

    1. muleさん

      改変されたソースコードをすべてチェックするつもりはございません。
      何百行もあるソースコードは迷惑ですので削除させていただきました。

      エラーの内容の通りですので、MyVSTProcessorクラスの中にcreateInstance関数があるか確認してください。

コメントを残す