Files
juce_playground/noise_slider/Source/MainComponent.cpp

54 lines
1.6 KiB
C++

#include "../JuceLibraryCode/JuceHeader.h"
class MainContentComponent : public AudioAppComponent {
public:
MainContentComponent() {
setSize(800, 600);
setAudioChannels(2, 2);
random = Random();
levelSlider.setRange (0.0, 0.25);
levelSlider.setTextBoxStyle (Slider::TextBoxRight, false, 100, 20);
levelLabel.setText ("Level", dontSendNotification);
addAndMakeVisible (levelSlider);
addAndMakeVisible (levelLabel);
}
~MainContentComponent() {
shutdownAudio();
}
void prepareToPlay (int samplesPerBlockExpected, double sampleRate) override {}
void getNextAudioBlock (const AudioSourceChannelInfo& buf) override {
const float l = levelSlider.getValue();
const float ls = l * 2.0f;
for (int c = 0; c < buf.buffer->getNumChannels(); ++c) {
float* const b = buf.buffer->getWritePointer(c, buf.startSample);
for (int s = 0; s < buf.numSamples; ++s) b[s] = random.nextFloat() * ls * l;
}
}
void releaseResources() override{}
void paint (Graphics& g) override {
g.fillAll (getLookAndFeel().findColour (ResizableWindow::backgroundColourId));
}
void resized() override {
levelLabel.setBounds (10, 10, 90, 20);
levelSlider.setBounds (100, 10, getWidth() - 110, 20);
}
private:
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainContentComponent)
Random random;
Slider levelSlider;
Label levelLabel;
};
Component* createMainContentComponent() { return new MainContentComponent(); }