JUCEでアプリケーション開発、音声処理のカスケード11、updateGraph関数4

1_プログラミング

前回のボリュームが多くて、今回は微妙に物足りないかもしれません

やっとupdateGraph関数も最後

JUCEのいろいろなクラスと、ポインタに悩まされてきたupdateGraph関数ですが、やっと完了しそうです。今回は、ボリュームが少ないのですが、チュートリアルの音声処理はこれで一通り完了となります。本家チュートリアルでは、「Convert the plugin into an application」と、スタンドアロンのアプリに移植する方法が続きますが、また必要になったときにやっていこうと思います。

進めているチュートリアルページは次のページとなります。

こんな人の役に立つかも

・JUCEフレームワークに入門したい人

・VST、AUプラグイン開発の最初の一歩を踏み出したい人

・JUCEのチュートリアルをやっている人

スポンサーリンク

updateGraph関数の最後、スロットのバイパス処理

最後は、スロットのバイパス処理になります。

for文で3回繰り返していますが、これはスロットの数になります。

        //スロットのバイパス設定を行います。
        for (int i = 0; i < 3; ++i)
//なぜかここにはスロット数が定数なんですよね^^;
        {
            auto  slot   = slots   .getUnchecked (i);
            auto& bypass = bypasses.getReference (i);
 
            //slotに何かしらのノードが設定されている場合です。
            if (slot != nullptr)
                slot->setBypassed (bypass->get());
        }

slotにノードが存在している場合のとき、バイパスの設定処理を行います。bypass変数は、bypassesというAudioParameterBool*のjuceのArrayなので、いわゆるboolの配列になります。この配列から順番に真偽を取得してきて、slot(AudioProcessorGraph::Node)のsetBypassed関数で引数にboolを与えることでパイパスかどうかを設定できます。そのままboolの値を代入すればOKなので、bypassのArrayからget関数で値を取得して、引数として利用しています。

        //入力音声のミュート設定を行います。
        audioInputNode->setBypassed (muteInput->get());
 
        //slotsからノードのポインタを取得して、slot1Node~slot3Nodeに代入します。
        slot1Node = slots.getUnchecked (0);
        slot2Node = slots.getUnchecked (1);
        slot3Node = slots.getUnchecked (2);
    }

プラグインには、入力音声をミュートするかどうか、の設定がありました。これを、音声入力ノード「audioInputNode」の「setBypassed」関数で設定することでプラグインへの音の入力をミュートにすることができます。

次に、slots.getUncheckedで音声処理ノードの「ObjectClassPtr」(ReferenceCountedObjectPtr)を取得しています。オブジェクトへのポインタです。指し示す先は、「AudioProcessorGraph::Node」クラスのオブジェクトになります。

やはり、ポインタが指し示すさきのクラスが何なのかがポイントですね

GitHubでサンプル

今回の動作検証を行った「CascadePlugin」をGitHubリモートリポジトリにPUSHしましたので、cloneして動作確認していただけるかと思います。

>git clone https://github.com/perfectpanda-works/CascadePlugin.git

また、プログラムだけを一部コピペしたり、全体を把握したいという場合は、zip形式でダウンロードもできますので、以下GitHubリポジトリへアクセスしていただければと思います。

プログラムをダウンロードして、理解を深めるツールとしていただけたら幸いです。

とりあえず動きます 笑

GenericAudioProcessorEditorでGUI

後から気づいたのですが、チュートリアルのGUIは、エディターを「GenericAudioProcessorEditor」クラスを利用して生成しているようです。

「PluginProcessor.cpp」のcreateEditor関数を以下のようにGenericAudioProcessorEditorで生成することで、自動的に、今利用しているパラメータでGUIを作成してくれるようです。(自由にGUIを作成する場合は、PluginEditorクラスに実装しなければいけません)

juce::AudioProcessorEditor* CascadePluginAudioProcessor::createEditor()
{
    //return new CascadePluginAudioProcessorEditor (*this);
    return new juce::GenericAudioProcessorEditor(*this);
}
タイトルとURLをコピーしました