#pragma once #include #include "../concurrency/BufferConsumer.h" #include "../PluginProcessor.h" class VolumeComponent : public juce::Component, public juce::Timer, public juce::Thread { public: VolumeComponent(OscirenderAudioProcessor& p); ~VolumeComponent() override; void paint(juce::Graphics&) override; void timerCallback() override; void run() override; void resized() override; private: OscirenderAudioProcessor& audioProcessor; std::shared_ptr consumer = std::make_shared(1 << 11); std::atomic leftVolume = 0; std::atomic rightVolume = 0; std::atomic avgLeftVolume = 0; std::atomic avgRightVolume = 0; juce::Slider volumeSlider; juce::Slider thresholdSlider; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(VolumeComponent) };