ホワイトノイズを発生させるプラグインを作成して、AudioPluginHostからも使えるようにしました。
ノイズは何かと有用だね~
JUCEのDSPモジュールを利用してフィルタープラグインをいろいろといじっています。ノイズを発生させてフィルターのかかり具合を見たりしています。
今は、macの開発環境で開発を行い始めましたが、DAWがlogicを利用しているので、macでしかプラグインの作成ができません。持ち運び用のノートPCであるwindowsマシンでも開発したいと思い、Projucerからビルドできる「AudioPluginHost」アプリを利用してどんな環境でもJUCEが入っていれば同じように検証できるよう、ホワイトノイズを発生させるプラグインを作成するとにしました。
これで、JUCEが入っているマシンであれば、「AudioPluginHost」アプリですべて検証することができますので、便利になります。
こんな人の役に立つかも
・JUCEでホワイトノイズ発生のプラグインを作成したい人
・DAW環境がないが、フィルタープラグインを検証したい人
・JUCEでホワイトノイズを作成したい人
このようなプラグインを作成します
GUIはテキストで「NoiseGenerator」と書かれているだけで、操作系はありません。
このプラグインを立ち上げると、サーっというホワイトノイズが発生します。ひたすらホワイトノイズを垂れ流します。
このように、「AudioPluginHost」アプリで立ち上げると、ホワイトノイズを発生させることができます。左のスペクトルアナライザは、以下の以前の記事でプラグイン化したスペアナプラグインです。
今回は、赤枠の「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手抜き・・・