AIと「自作DTMプラグイン」を作ってみた話

AIと「自作DTMプラグイン」を作ってみた話
目次 (Table of Contents)

「専門外で知識のない分野でも、AIにお願いすれば実用的なものを作れるのか?」

普段はWebデザイナーとしてHTMLやCSSを触ることはあっても、ソフトウェアやアプリの開発はまったくやったことがなかったので、自分でも気になっていたテーマでした。

そんな中、趣味でギターを弾いているときに、ふと思いました。

「AIにお願いしたら、自分専用のDTMプラグインが作れるんじゃないか?」

DTMプラグインの開発といえば、プログラミング言語のC++や、音を扱うためのDSP(デジタル信号処理)、さらにはDAW規格(VST3やAudio Unit)の知識が必要です。

普段C++に触れる機会はなく知識もありませんでしたが、どこまで作れるのか実際に試してみることにしました。

最初の挑戦:「JUCE」を使ったプロトタイプ

まずはAI(Antigravity)に、「そもそもDTMプラグインはどうやって作るのか」を聞いてみました。

KATSUYA ARAI KATSUYA ARAI

趣味でギターを弾いてるんだけど、DTMで使える歪みエフェクター(オーバードライブ)ってAIで作れる?
そもそも何で作るのかも知らないんだけど……。

Antigravity Antigravity

作れます!DTMプラグインは一般的に「C++」という言語で開発しますが、知識がなくても問題ありません。
「JUCE(ジュース)」という定番フレームワークがあり、これを使えばmacOS環境でスムーズに組み立てられます。
まずはMac単体でギターを鳴らせるスタンドアローンアプリと、DAW用のVST3プラグインを作ってみましょう。

とりあえず「じゃあ作ってみて」とお願いしてみました。

自分ひとりなら環境の準備や勉強だけで挫折しそうなところですが、指示を出したあとは、必要なツールの導入からコードの作成、ビルドまでAIが自動で進めてくれます。

そして間もなく、最初の歪みプラグイン「GuitarDrive」のプロトタイプが完成しました。

画面上に緑色のペダルが表示され、ギターを弾くとちゃんと歪んだ音が出ます。定番エフェクター「TS9(Tube Screamer)」を意識した音作りや、デジタルっぽさを抑える処理まで自動で組み込まれていました。

実際にギターの音が出たことを確認したところで、ふと疑問が湧きました。

KATSUYA ARAI KATSUYA ARAI

これ、せっかく作ったし他の人にも配って使ってもらったりできる?

Antigravity Antigravity

無料配布であれば問題なく可能です!ただ、JUCEの仕組み上、プラグインのファイルサイズが数十MB程度まで大きくなる傾向があります。また、もし将来的に販売することになった場合、売上規模によってはライセンス費用が発生する規約になっています。

どうせなら、気軽に配れるようにファイルサイズはできるだけ小さくしたいですし、将来販売することになってもライセンスを気にせず扱えるようにしておきたいところです。

KATSUYA ARAI KATSUYA ARAI

配布しやすさも考えてサイズを小さくしたいし、ライセンスの縛りもなくしたいんだけど、JUCEを使わずにC++だけでゼロから作ることってできる?

Antigravity Antigravity

可能です。VST3やAudio Unitの規格を、外部ライブラリを使わずにC++だけで直接実装しましょう。ファイルサイズも大幅に小さくできますし、ライセンスの制限も一切なくなります。

こうして、フレームワークを使わずにゼロから作り直すことになりました。

フレームワークなしで作り直した結果

さっそくAIにお願いして、JUCEを使わずにC++だけで一から組み直した新しい歪みプラグイン「PureDrive」を作ってもらいました。

完成したファイルのサイズを、最初のJUCE版と比較してみると大きな違いが出ました。

CODE
GuitarDrive.vst3(JUCE使用)         : 約 18.5 MB
PureDrive.vst3(フレームワークなし) : 約 317 KB(0.3MB)

サイズは約60分の1に。
さらに、DAWを起動せずにダブルクリック単体でギターを弾けるMac用アプリ版(PureDrive.app)に至っては、わずか 97 KB でした。

自作オーバードライブ「PureDrive」のGUI画面
自作オーバードライブ「PureDrive」のGUI画面。外部ライブラリを使わずMac標準機能だけで描画。

余計なデータが含まれなくなったことで、動作も軽くて配布しやすいプラグインの土台ができました。

実際に鳴らしてみて気づいた違和感をAIに伝える

僕自身、ギターを始めたばかりで「どんな音がいい音なのか」は正直よく分かっていません。
ただ、そんな初心者の耳で聴いても「これは明らかにおかしい」と分かる問題が2つありました。

ゲインを上げるとノイズばかり増える

1つ目は、「DRIVEノブを回して歪みを増やしても、サーッというノイズばかりが大きくなり、肝心のギターの音が前に出てこない」という点でした。

KATSUYA ARAI KATSUYA ARAI

音は鳴るんだけど、ノイズばかり増えてギターの音が全然前に出てこない。音が痩せてる感じがするんだけど、何が起きてる?

AIに原因を調べてもらったところ、音声の入出力処理に問題が見つかりました。

Antigravity Antigravity

音の「入力」と「出力」を別々の処理で動かしていたため、内部でわずかなタイミングのズレが生じて音が途切れ、それがノイズになっていました。
入出力を1つにまとめて同時に処理する方式に作り直します。

直してもらったところ、気になっていたサーッというノイズが消えて、ギターの音がクリアに鳴るようになりました。

あわせて、オーディオインターフェースの使っていないマイク端子からノイズが入り込んでいたことも分かったため、ギターが繋がっている端子だけを自動で選ぶようにも調整してもらいました。

エフェクトONより「BYPASS」の方が音が大きい

ノイズが消えた後に、もうひとつおかしな点に気づきました。

「エフェクトをONにすると音が奥まって小さくなり、スイッチを切ってBYPASS(原音そのまま)にした方が太くて音が大きい」という状態になっていたのです。

KATSUYA ARAI KATSUYA ARAI

スイッチをONにすると音が遠くへ行って小さくなって、OFF(バイパス)にした時の方が太くて迫力がある。歪ませてるのに負けるのはおかしいよね?

詳しい計算式などは分かりませんが、そのままAIに伝えて調べてもらうと、音作りの計算ミスが見つかりました。

Antigravity Antigravity

低音のモワつきを抑えるためのフィルター計算に誤りがありました。
本来は低音だけを少し削るはずが、計算ミスで中音域までごっそり削れてしまっていたのが原因です。
実機(TS9)の回路特性に合わせて、低音の太さを残したまま中高音だけを押し出す方式に修正します。

修正後にギターを鳴らしてみると、エフェクトをONにしたときにちゃんと音が前に出て、それっぽいオーバードライブの音で鳴るようになりました。

コードや数式は分かりませんが、耳で聴いた違和感をそのまま伝えるだけで、ちゃんと意図通りに直してくれるのは助かりました。

Logic Proで動かそうとしたら、VST3が使えなかった

ちゃんと音が出るようになったので、早速普段使っているDAW「Logic Pro」で使ってみることにしました。

プラグインといえばVST3だと思っていたので、Logicでもそのまま読み込めば動くと思っていたのですが……。

KATSUYA ARAI KATSUYA ARAI

早速Logic Proで使いたいんだけど、作ったVST3を読み込めばいいの?

Antigravity Antigravity

実は、Logic ProはVST3に対応していません。
Mac環境のLogicで使うには、Apple独自の規格である「Audio Unit(AUv2)」で作る必要があります。
さらに、Apple公式の検証ツール「auval」のテストに合格しないと、Logic Pro上でブラックリスト(使用不可)に入れられて読み込んですらもらえません。

そもそもVST3が使えないことすら知らなかったですし、「auval」という検証ツールの存在も初めて聞きました。

KATSUYA ARAI KATSUYA ARAI

そうなんだ……。じゃあLogic Proでも使えるように、そのAppleの規格で作ってもらえる?

Antigravity Antigravity

お任せください。AppleのAudio Unit規格に合わせてプログラムを組み直します。auvalの検証もパスできるように調整します。

お願いすると、Audio Unit規格に対応したコードを組み上げ、ターミナルで auval を実行して検証まで進めてくれました。

BASH
$ auval -v aufx pudr MyAu
...
FORMAT TESTS:
Reported Channel Capabilities (explicit): [1, 1]  [1, 2]  [2, 2]
Input Chan Info: 1  Output Chan Info: 1  -- Success
Input Chan Info: 1  Output Chan Info: 2  -- Success
Input Chan Info: 2  Output Chan Info: 2  -- Success
...
RENDER TESTS:
Render Test at 512 frames
Render Test at 64 frames
Render Test at 4096 frames
...
AU VALIDATION SUCCEEDED.

エラーや警告もなく、無事に一発でパスしました。

Logic Proを立ち上げてギタートラックのインサートスロットを開くと、プラグイン一覧に「PureDrive」がしっかり表示され、ノイズや遅延もなくスムーズに動作しました。

C++のこともプラグイン規格のことも分かっていませんでしたが、普段使っているDAWの中で自作エフェクターが普通に動いているのを見たときは、なかなか嬉しい瞬間でした。

まとめ

今回のプラグイン作りを通じて、専門外で全く知識がない分野でも、AIにお願いすれば実用的なものがちゃんと作れるんだなと実感しました。

自分がやったことといえば、

  • 「こういうプラグインを作りたい」と伝えること
  • 音を聴いてみて、「ノイズが大きい」「音が細い」と感じたことをそのまま伝えること

くらいでした。

難しいコードや計算が分からなくても、耳で聴いた違和感を伝えるだけで、実装や修正はAIがどんどん進めてくれます。

知識がないからと諦めていたことでも、AIに投げてみると案外あっさり形にしてくれるかもしれません。

今回作ったプラグイン

  • PureDrive(ギター用オーバードライブ)
    • ファイルサイズ: VST3版 約317KB / 単体アプリ版 約97KB
    • 対応形式: VST3 / Audio Unit (Logic Pro対応) / Mac単体アプリ