v1.2.2: Live spectrum analyzer, makeup gain, drag-and-drop signal chain
- Real-time FFT spectrum analyzer drawn behind EQ curves - Makeup gain knob (+/- 24 dB) after limiter - Draggable signal chain panel: reorder Master Gain / Limiter / Makeup Gain - Chain order saved/restored with DAW session - Scaled fonts in signal chain panel Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
46
Source/SignalChainPanel.h
Normal file
46
Source/SignalChainPanel.h
Normal file
@@ -0,0 +1,46 @@
|
||||
#pragma once
|
||||
#include <JuceHeader.h>
|
||||
#include "PluginProcessor.h"
|
||||
|
||||
class SignalChainPanel : public juce::Component
|
||||
{
|
||||
public:
|
||||
struct Listener
|
||||
{
|
||||
virtual ~Listener() = default;
|
||||
virtual void chainOrderChanged (const std::array<InstaLPEQProcessor::ChainStage, InstaLPEQProcessor::numChainStages>& order) = 0;
|
||||
};
|
||||
|
||||
SignalChainPanel();
|
||||
|
||||
void setListener (Listener* l) { listener = l; }
|
||||
void setOrder (const std::array<InstaLPEQProcessor::ChainStage, InstaLPEQProcessor::numChainStages>& order);
|
||||
std::array<InstaLPEQProcessor::ChainStage, InstaLPEQProcessor::numChainStages> getOrder() const { return currentOrder; }
|
||||
|
||||
void paint (juce::Graphics& g) override;
|
||||
void resized() override;
|
||||
void mouseDown (const juce::MouseEvent& e) override;
|
||||
void mouseDrag (const juce::MouseEvent& e) override;
|
||||
void mouseUp (const juce::MouseEvent& e) override;
|
||||
|
||||
private:
|
||||
static constexpr int numBlocks = InstaLPEQProcessor::numChainStages;
|
||||
std::array<InstaLPEQProcessor::ChainStage, numBlocks> currentOrder {
|
||||
InstaLPEQProcessor::MasterGain,
|
||||
InstaLPEQProcessor::Limiter,
|
||||
InstaLPEQProcessor::MakeupGain
|
||||
};
|
||||
|
||||
int draggedIndex = -1;
|
||||
float dragOffsetX = 0.0f;
|
||||
float dragCurrentX = 0.0f;
|
||||
|
||||
Listener* listener = nullptr;
|
||||
|
||||
juce::Rectangle<float> getBlockRect (int index) const;
|
||||
int getBlockAtX (float x) const;
|
||||
juce::String getStageName (InstaLPEQProcessor::ChainStage stage) const;
|
||||
juce::Colour getStageColour (InstaLPEQProcessor::ChainStage stage) const;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SignalChainPanel)
|
||||
};
|
||||
Reference in New Issue
Block a user