この記事は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プラグインを作るには
- C++を完全に理解して
- 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の記事です。お楽しみに!