I found this white noise generator online:
#pragma once
#include <JuceHeader.h>
//==============================================================================
class WhiteNoiseComponent : public juce::AudioAppComponent
{
public:
WhiteNoiseComponent()
{
setSize (800, 600);
setAudioChannels (0, 2); // no inputs, two outputs
}
~WhiteNoiseComponent() override
{
shutdownAudio();
}
void prepareToPlay (int samplesPerBlockExpected, double sampleRate) override
{
juce::String message;
message << "Preparing to play audio...\n";
message << " samplesPerBlockExpected = " << samplesPerBlockExpected << "\n";
message << " sampleRate = " << sampleRate;
juce::Logger::getCurrentLogger()->writeToLog (message);
}
void releaseResources() override
{
juce::Logger::getCurrentLogger()->writeToLog ("Releasing audio resources");
}
void getNextAudioBlock (const juce::AudioSourceChannelInfo& bufferToFill) override
{
for (auto channel = 0; channel < bufferToFill.buffer->getNumChannels(); ++channel)
{
// Get a pointer to the start sample in the buffer for this audio output channel
auto* buffer = bufferToFill.buffer->getWritePointer (channel, bufferToFill.startSample);
// Fill the required number of samples with noise between -0.125 and +0.125
for (auto sample = 0; sample < bufferToFill.numSamples; ++sample)
buffer[sample] = random.nextFloat() * 0.25f - 0.125f;
}
}
private:
juce::Random random;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WhiteNoiseComponent)
};
I placed it into my blank android example from Projucer:
class NP2Application : public juce::JUCEApplication
{
public:
//==============================================================================
NP2Application() {}
const juce::String getApplicationName() override { return ProjectInfo::projectName; }
const juce::String getApplicationVersion() override { return ProjectInfo::versionString; }
bool moreThanOneInstanceAllowed() override { return true; }
//==============================================================================
void initialise (const juce::String& commandLine) override
{
// This method is where you should put your application's initialisation code..
whiteNoiseComponent = std::make_unique<WhiteNoiseComponent>();
}
//...
And it worked. When the android app launched, the white noise started playing.
However, this white noise is an AudioAppComponent
. I completely ignored GUI in my app, I want to use Flutter for GUI and just use JUCE for audio processing.
Instead of AudioAppComponent
, how would this simple white noise generator be done?