JUCEで作るASIO対応アプリ -VSTプレイヤー編-
前回の記事に引き続き、JUCEからASIOドライバ対応のアプリケーションを作る手順を紹介します。本記事では、Projucerの”Audio Plug-In”テンプレートから作ることができるスタンドアローン形式のVSTプレイヤーを利用します。
■本記事の概要
1. ASIO SDKをダウンロードする
2. ASIO SDKのzipファイルを解凍する
3. Projucerで “Audio Plug-In”のテンプレートから新規プロジェクトを作成する
4. プロジェクト設定を開き、[Build Standalone Plug-In]を “Enabled”にする
5. [Modules] → [juce_audio_devices] → [JUCE_ASIO]を “Enabled”にする
6. [Exporters] → [Header Search paths]にASIO SDKのパスを入力する
7. プロジェクトを保存し、IDE (Visual Studio)でビルドする
8. ビルドしたアプリを起動し、オーディオ設定パネルからASIOを有効にする
1.ASIO SDKをダウンロードする
Steinbergの開発者向けページからダウンロードすることができます。
URL:https://www.steinberg.net/en/company/developers.html
2.zipファイルを解凍する
ASIO SDKをダウンロードしたら、zipファイルを解凍しておきましょう。
本記事では、”C:/SDKs/Steinberg SDK/ASIOSDK2.3″に解凍しておきます。
ASIO SDKにはソースコード、サンプルプロジェクト、ドキュメントが含まれています。
3.Projucerで新規プロジェクトを作成
本記事では、Projucerの”Audio Plug-In”テンプレートを元に作成したアプリケーションをASIOに対応させていきます。
“Audio Plug-In”テンプレートを利用することで、DAW等のホストアプリケーション上で実行することのできるVST/AUプラグインを簡単に作成することができます。
また、プラグイン形式だけでなく、スタンドアローン形式として、オーディオデバイスからの音声入力・出力やMIDI入出力を行うことができるアプリケーションを出力することができるのも大きな特徴です。
4.プロジェクト設定でスタンドアローン形式を有効にする
①[Projece Settings]ボタンをクリックし、プラグイン形式の選択画面を表示します。
②[Build Standalone Plug-In]を “Enabled”にしておきます。
※デフォルト値で”Enabled”になっています。
5.JUCEモジュール設定でASIO対応を有効にする
①プロジェクト設定から[Modules]→[juce_audio_devices]を選択します。
②[JUCE_ASIO]を “Enabled”に変更します。
6.エクスポート設定でASIO SDKのヘッダーファイルパスを追加する
①[Exporters]から、ビルドを実行するIDEのビルド設定アイテムを選択します。
②[Header Search Paths]欄に、上記(2)の作業で配置したASIO SDKのソースコードへのパスを入力します。
本記事では “C:/SDKs/Steinberg SDK/ASIOSDK2.3/common” を入力しました。
※画像ではReleaseビルドの設定項目にパスを追加していますが、DebugビルドでもASIO対応させたい場合は、同様にDebugビルドの設定項目にパスを追加してください。
7.プロジェクトの保存とIDE (Visual Studio)でビルド
Projucerでの作業が完了したら、プロジェクトを保存し、IDE(Visual Studio)でプロジェクトを開きます。
AppConfig.h内の”JUCE_ASIO”定義が有効になっていること、ASIO SDKのヘッダーファイルが参照されていることが確認できたら、ビルドを実行します。
8.ビルドしたアプリケーションの起動とASIOの有効化
アプリケーションの実装例として、JUCE JAPAN vol.2 で紹介したパラメトリックEQをスタンドアローン形式でビルドした場合を示します。
GitHub: https://github.com/COx2/JUCE_JAPAN_DEMO
VSTプラグイン版DL: Windows (64bit+32bit) , macOS (64bit+32bit)
▼アプリケーションを起動する
ビルドしたアプリケーション “[プロジェクト名].exe” を起動すると、以下のような画面が 表示されます。
▼オーディオデバイス設定パネルを開く
ウインドウ左上の[Options]→ [Audio/MIDI Settings]をクリックしてオーディオデバイス設定パネルを開きます。
▼オーディオデバイス設定パネル
各項目の意味については、前回の記事の表の通りです。
なお、前回の記事には無かった[Feedback Loop]が追加されていますが、これはマイク入力とスピーカー出力との間でフィードバックループが発生してしまうのを防ぐために予めテンプレート側で実装されているスペシャルな機能です。
▼ASIOの設定を行う
[Audio device type]のコンボボックスから”ASIO”を選択すると、ドライバモードがASIOに切り替わり、GUIも変更されます。
[Device]のコンボボックスにASIO対応のデバイス一覧が表示されるので、使用するオーディオデバイスを選択します。
[Control Panel]ボタンをクリックすると、ASIOデバイス毎に設けられたコントロールパネルが開きます。
これで、ASIOに対応したスタンドアローンVSTプレイヤーが完成しました。
本記事で紹介した “Audio Plug-In”のテンプレートからASIO対応アプリを作ることで、低レイテンシーなオーディオ入出力機能を持ったアプリを作ることができます。
おまけ.
今回の記事を試してみたい…でもVSTプラグインのDSPとGUIの実装が面倒だ…、と思われた方には、JUCEのサンプルプロジェクト”JuceDemoPlugin”を改造するのがお勧めです。
“JUCE/examples/audio plugin demo”にある.jucerファイルを開き、上記手順の通りに設定を行うことで試すことができます。
VSTiの実装の参考にもなるでしょう。