2023-07-08 17:59:05 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <JuceHeader.h>
|
|
|
|
#include "../concurrency/BufferConsumer.h"
|
|
|
|
#include "../PluginProcessor.h"
|
|
|
|
|
2023-07-10 12:17:04 +00:00
|
|
|
class VisualiserComponent : public juce::Component, public juce::Timer, public juce::Thread {
|
2023-07-08 17:59:05 +00:00
|
|
|
public:
|
|
|
|
VisualiserComponent(int numChannels, OscirenderAudioProcessor& p);
|
|
|
|
~VisualiserComponent() override;
|
|
|
|
|
|
|
|
void setBuffer(std::vector<float>& buffer);
|
|
|
|
void setColours(juce::Colour backgroundColour, juce::Colour waveformColour);
|
|
|
|
void paintChannel(juce::Graphics&, juce::Rectangle<float> bounds, int channel);
|
|
|
|
void paintXY(juce::Graphics&, juce::Rectangle<float> bounds);
|
|
|
|
void paint(juce::Graphics&) override;
|
2023-07-09 20:30:33 +00:00
|
|
|
void timerCallback() override;
|
2023-07-10 12:17:04 +00:00
|
|
|
void run() override;
|
2023-07-08 17:59:05 +00:00
|
|
|
|
|
|
|
private:
|
2023-07-22 17:42:30 +00:00
|
|
|
juce::CriticalSection lock;
|
2023-07-08 17:59:05 +00:00
|
|
|
std::vector<float> buffer;
|
|
|
|
int numChannels = 2;
|
|
|
|
juce::Colour backgroundColour, waveformColour;
|
|
|
|
OscirenderAudioProcessor& audioProcessor;
|
2023-07-19 20:40:31 +00:00
|
|
|
std::shared_ptr<BufferConsumer> consumer = std::make_shared<BufferConsumer>(4096);
|
|
|
|
int precision = 4;
|
2023-07-08 17:59:05 +00:00
|
|
|
|
|
|
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(VisualiserComponent)
|
|
|
|
};
|