54 lines
1.6 KiB
C++
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(); }
|