JUCEプログラミング、プラグイン開発のデバッグ、メッセージ出力

1_プログラミング

チュートリアルを進めるうちに、プラグイン開発でのデバッグメッセージ出力方法がわかってきました。

今までは予想して実装して確認だったので、より確認しやすくなるね~

JUCEプログラミングのSynthの項目をやっていたら、デバッグ用メッセージ出力のプログラムが出てきました。JUCEのLoggerを使った方法がわかったので、スタンドアロンのアプリ開発では難なくVisualStudioなどの出力へメッセージを出力できるようになりました。一方で、プラグインはホストとなるアプリから起動するので、デバッグメッセージの確認のやり方をいろいろと調べていました。

JUCEプラグイン開発で有名な@CO_CO_さんの2017年のtweetでやり方を見つけ、プラグイン開発でのIDE(VisualStudio2019)へのメッセージ出力を行いましたので、備忘録です。

こんな人の役に立つかも

・JUCEプラグイン開発でデバッグ用メッセージを確認したい

・JUCEプラグイン開発のチュートリアルをやっている人

・JUCEでプラグインが開発したい人

スポンサーリンク

利用するプラグインプログラム

以前作成した、CascadePluginのプログラムにデバッグ用メッセージのプログラムを埋め込みました。次のGitHubリモートリポジトリに配置してあります。

追記したプログラム

JUCEでは、次のプログラムの[1]のようにStringクラスをLoggerクラスのgetCurrentLoggerでロガーを取得して「writeToLog」関数で出力ができるようです。JUCEのSynthチュートリアルの一番最初の項目でさりげなく出現しました。

void CascadePluginAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer, juce::MidiBuffer& midiMessages)
{
    for (int i = getTotalNumInputChannels(); i < getTotalNumOutputChannels(); ++i)
        buffer.clear(i, 0, buffer.getNumSamples());

    updateGraph();

    mainProcessor->processBlock(buffer, midiMessages);

    //[1]デバッグ用メッセージ出力です。
    juce::String message;
    message << "ProcessBlock\n";
    juce::Logger::getCurrentLogger()->writeToLog(message);
}

今回、プラグインの「processBlock」関数に埋め込んでみることにしました。

より簡単な出力 2020/12/10追記

JUCEでは、デバッグ用メッセージ出力は次のようにして簡単にできました。

DBG(juce::String("ここにメッセージ"));

この方法は、チュートリアルだと、Audioの「Looping audio using the AudioSampleBuffer class (advanced)」で出現しました。DBGのドキュメントもご参考ください。

DBGの公式ドキュメント

プログラムの実行方法

ここからは、先ほどの@CO_CO_さんのtweetの順番で実行していきます。

Debugモードでビルド

 

AudioPluginHostアプリを実行

JUCEで作成されたプラグイン実行用のアプリです。最初は、自分でプロジェクトファイルからビルドする必要があります。こちらの記事の「検証用ホストの作成」で紹介しておりますので、ご参考ください。

プラグインホストアプリは立ち上がるとこんな感じです。

VisualStudioのプロセスにアタッチ

次に、ホストアプリとVisualStudioをアタッチしていきます。

デバッグの項目にある「プロセスにアタッチ」で、プラグインホストアプリを選択します。

プロセス一覧がでますので、タイトルが「Juce Plug-In Host」のプロセスを選択します。(ここはデフォルトの状態でホストアプリのビルドをした場合のタイトルになりますので、変更した場合は任意の名称になります。)

プラグインの稼働

ホストアプリにログメッセージ出力を埋め込んだプラグインを立ち上げます。

VisualStudioの出力ウィンドウにメッセージが出力されました。

ずっとやりたかった原始的なprintf的デバッグがやっとできるように・・・

まずはこのデバッグ方法でやりたかったよね~

いったんプラグインの枠組みから離れて、JUCEのチュートリアルをいろいろとやっていますが、やはり全体としてやってみないと不明点も多く、意外とそこに書いてあったか・・・みたいなパターンもありますので、引き続きJUCEチュートリアルを少しづつ進めていきたいと思います。

そして、@CO_CO_さん、画像を残してくださってありがとうございました。

タイトルとURLをコピーしました