feature image

2020年12月4日 | ブログ記事

【一緒に始めよう】VSTプラグインをつくる【AdC2020 21日目】

この記事はtraPアドベントカレンダー2020 21日目の記事です。

ブラックフライデーが終わりましたが

みなさんは今年どれくらい散財しましたか?僕は去年のこの時期にだいぶ色々買い揃えてしまったので、iZotope Music Production Suite 4とAAS Strum GS-2とBest Service Era 2 Vocal CodexとMelda Production MAutoAlignとHeaviocity AscendとOutput PortalとGlitchmachines Convex/Fracture XT/Palindromeだけで済みました向こう半年はモヤシしか食えん

頑張るぞい!頑張るぞい!頑張るぞい!頑張るぞい!頑張るぞい!頑張るぞい!頑張るぞい!頑張るぞい!頑張るぞい!頑張るぞい!頑張るぞい!頑張るぞい!頑張るぞい!頑張るぞい!頑張るぞい!頑

僕と違ってプラグインを買いまくってお財布がすっからかんな悲しい皆さんも大丈夫!お金がなくてプラグインが買えないなら、プラグインを作ってしまえばいいのです!さぁ、VSTプラグインを作りましょう!

この記事は何

突如、「プラグインってどうやって作ってんねん」と気になったので調べ始める。それから曲書きつつゆるゆる4日くらいで簡単なエフェクターが書けた(写経)ので、モチベ維持と知識整理のためにブログにまとめます。

つまり初心者の「やってみた」記事なので、同じようにやってみたい人の参考になればな、という記事です。圧倒的強者の人は回れ右するか、コメント欄でおせっかいを炭火焼きしてくださるとたすかります。

プラグインのつくりかた

そもそもVSTプラグインってどうやって作んねんという話です。

まず言語ですが、VSTプラグインはC++を書いて作ります。と、このページに書いてあります。

読んだサイト:VSTとは? - C++でVST作り | うつぼかずら

なのでまずC++の基礎知識が前提になってしまいます。
かく言う私もC言語は中学の頃に本を読んだくらいの知識しかなかったので、慌てて入門サイトを読みました。

読んだサイト:C++入門 - プログラムを書こう!のページ

ついでにVisual Studio 2019を導入して、使い方を思い出すなどしました。この入門サイトを読み終わる頃にはあなたも何となくC++を†完全理解†していることでしょう。

さっきのページによると、VSTプラグインを作るにはVST SDKが必要だと言うのでこれも導入します。導入するって言ってもCドライブ直下に置いただけなんですけど...。置いただけで以降全く使わなかったんですけど...。後述するJUCEを使わないでゴリゴリに書いていきたい人はこのページを読んでしっかり導入してください。

読んだサイト:VST3開発環境の準備 - C++でVST作り

余談ですが、このサイトではC++でゴリゴリプラグインを作ったり、VSTホストアプリケーションを作ったりする方法が解説されています。将来的には参考にするかもしれないサイトなので、ブックマークにちゃんとぶち込んでおきました。

さて、ゴリゴリにC++を書かなくても割と簡単にVSTプラグインが作れちゃうライブラリとしてJUCEというものがあります。まずはコレを使ってちゃちゃっと作ってみるか~という気分だったので(そしてなによりC++を†完全理解†しているので)、コイツを使うことにしました。

読んだサイト:JUCEハンズオン ~JUCEをはじめよう~ - Qiita

まとめると、VSTプラグインを作るには

  1. C++を完全に理解して
  2. JUCEライブラリで楽をする

のが良いらしいです。

JUCEを学ぶ

ココらへんから学習のハードルが上がり始めます。C++ともなると日本語でも大量の文献があるのですが、JUCEライブラリの文献はそこまで多くありません。でも英語の文献読むのは結構骨が折れるので、なんとか日本語文献をかき集めました。日本語でなんとなく理解しておくと英語文献読みやすくなるしね。

読んでる書籍:JUCE JAPANシリーズ(Vol.1、Vol.2、2018の3冊、写経にオススメ)
読んでるサイト:JUCE Advent Calendar 2017(1番充実した年、入門記事多め)
読んでるサイト:JUCE Advent Calendar 2018
読んでるサイト:JUCE Advent Calendar 2019
読んでるサイト:JUCE Advent Calendar 2020
読んだサイト:JUCEハンズオン@Abletonand Max Community Japan #009
役立ちそうなサイト:JUCE - ぱんだクリップ
共感したサイト:JUCEでVST/AUプラグイン制作はじめました - おとわび和風音楽素材(文言が変わってたり記述方法が変わってたりする、っていう歌詞に共感した)
読みたいサイト:夏休みはMATLABで楽々(?)VSTプラグイン開発 - note (MATLAB!そういうのもあるのか)

とりあえず私はJUCE JAPAN Vol.1のディストーションプラグイン制作を読みながら写経して、なんとなく完全理解しました。ゆるゆるやっても2日あれば終わるくらいの内容で、なにより達成感あるのでオススメです。

レイアウトが崩壊してますが、ちゃんと動作します。

よく分からなくなったとき

エラーコードでggる、ドキュメントを読む、フォーラムを覗く。いくらtraPとはいえ訊く相手がいないので...。

公式ドキュメント:Juce: Class Index
公式チュートリアル:Tutorials | Juce
公式フォーラム:JUCE  - JUCE Forum
よく分かんなくなったらggるしかないので、腹くくってEnglishをreadましょう。

気になること・やりたいこと

JUCE JAPAN Vol.1は時間領域の処理を扱っていたのですが(ディストーション)、Vol.2ではフィルタを題材に周波数領域の処理を扱っているので、まずはコイツを写経したいところです。さらに2018ではシンセづくりを題材に、バーチャルアナログの話とか、MIDIの扱いの話とかもされてるっぽいので、私気になります!

あとFaustという言語を使うと、C++経由でさらにお手軽に色々生やせるらしいので、これも触ってみたいですね。

読んだ記事:Faust&JUCEによる超高速VST開発 - Qiita

明日は@kashiwade、@bonc256の記事です。お楽しみに!

liquid1224 icon
この記事を書いた人
liquid1224

traPサウンド藩の浪士です。はやく老師になりたい。

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

ERC20トークンを用いた宝探しゲーム(真)の提案【アドベントカレンダー2018 10日目】 feature image
2018年11月3日
ERC20トークンを用いた宝探しゲーム(真)の提案【アドベントカレンダー2018 10日目】
Azon icon Azon
2020年3月16日
【 #LogicProX 】#DrumKitDesigner から #UltraBeat に乗り換えよう 第2話
SolunaEureka icon SolunaEureka
2020年3月15日
【 #LogicProX 】#DrumKitDesigner から #UltraBeat に乗り換えよう 第1話
SolunaEureka icon SolunaEureka
2019年4月22日
アセンブリを読んでみよう【新歓ブログリレー2019 45日目】
eiya icon eiya
2018年12月12日
多重スリーブの世界と,各種進捗報告。
Silviase icon Silviase
2018年4月17日
春休みにゲームを作りました
uynet icon uynet
記事一覧 タグ一覧 Google アナリティクスについて