#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(); }