JUCEプラグイン、WhiteNoiseGeneratorをプラグインとして実装

ホワイトノイズを発生させるプラグインを作成して、AudioPluginHostからも使えるようにしました。

ノイズは何かと有用だね~

JUCEのDSPモジュールを利用してフィルタープラグインをいろいろといじっています。ノイズを発生させてフィルターのかかり具合を見たりしています。

今は、macの開発環境で開発を行い始めましたが、DAWがlogicを利用しているので、macでしかプラグインの作成ができません。持ち運び用のノートPCであるwindowsマシンでも開発したいと思い、Projucerからビルドできる「AudioPluginHost」アプリを利用してどんな環境でもJUCEが入っていれば同じように検証できるよう、ホワイトノイズを発生させるプラグインを作成するとにしました。

これで、JUCEが入っているマシンであれば、「AudioPluginHost」アプリですべて検証することができますので、便利になります。

目次

こんな人の役に立つかも

・JUCEでホワイトノイズ発生のプラグインを作成したい人

・DAW環境がないが、フィルタープラグインを検証したい人

・JUCEでホワイトノイズを作成したい人

このようなプラグインを作成します

GUIはテキストで「NoiseGenerator」と書かれているだけで、操作系はありません。

このプラグインを立ち上げると、サーっというホワイトノイズが発生します。ひたすらホワイトノイズを垂れ流します。

このように、「AudioPluginHost」アプリで立ち上げると、ホワイトノイズを発生させることができます。左のスペクトルアナライザは、以下の以前の記事でプラグイン化したスペアナプラグインです。

音声処理スレッド編

GUI、メッセージスレッド編

今回は、赤枠の「NoiseGenerator」というホワイトノイズ発生プラグインの実装となります。

実装

実装自体はとてもシンプルです。ProjucerのPluginのテンプレートから以下の実装コードを追加していきます。

プロセッサ側

PluginProcessor.h

ホワイトノイズを発生させるためのRandomクラスのオブジェクトを定義しておきます。

class NoiseGenerator01AudioProcessor  : public juce::AudioProcessor
{
public:
//...略...

private:
    //追加しました。
    juce::Random random;

    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (NoiseGenerator01AudioProcessor)
};

PluginProcessor.cpp

processBlock関数に以下のようにホワイトノイズデータの書き込み処理を行います。

void NoiseGenerator01AudioProcessor::processBlock (juce::AudioBuffer<float>& buffer, juce::MidiBuffer& midiMessages)
{
//...略...
    for (int channel = 0; channel < totalNumInputChannels; ++channel)
    {
        auto* channelData = buffer.getWritePointer (channel);

        //以下の内容を追加しました。
        for (auto sample = 0; sample < buffer.getNumSamples(); ++sample)
            channelData[sample] = random.nextFloat() * 0.25f - 0.125f;
    }
}

Editor側

「PluginEditor.cpp」のpaint関数のテキスト「HelloWorld」を「NoiseGenerator」という文字に変更しました。

void NoiseGenerator01AudioProcessorEditor::paint (juce::Graphics& g)
{

//...略...
    //以下のテキスト表示を変更しました。
    g.drawFittedText ("NoiseGenerator", getLocalBounds(), juce::Justification::centred, 1);
}

GUI手抜き・・・

よかったらシェアしてね!
目次
閉じる