Full-featured linear phase EQ with interactive graphical curve display. FIR-based processing (8192-tap), 8 parametric bands, multi-platform CI/CD (Windows/macOS/Linux), InstaDrums visual style. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
50 sor
1.6 KiB
C++
50 sor
1.6 KiB
C++
#pragma once
|
|
#include <JuceHeader.h>
|
|
#include "EQBand.h"
|
|
|
|
class NodeParameterPanel : public juce::Component,
|
|
private juce::Slider::Listener,
|
|
private juce::ComboBox::Listener,
|
|
private juce::Button::Listener
|
|
{
|
|
public:
|
|
struct Listener
|
|
{
|
|
virtual ~Listener() = default;
|
|
virtual void nodeParameterChanged (int bandIndex, const EQBand& band) = 0;
|
|
virtual void nodeDeleteRequested (int bandIndex) = 0;
|
|
};
|
|
|
|
NodeParameterPanel();
|
|
|
|
void setListener (Listener* l) { listener = l; }
|
|
void setSelectedBand (int index, const EQBand* band);
|
|
int getSelectedIndex() const { return selectedIndex; }
|
|
|
|
void resized() override;
|
|
void paint (juce::Graphics& g) override;
|
|
|
|
private:
|
|
void sliderValueChanged (juce::Slider* slider) override;
|
|
void comboBoxChanged (juce::ComboBox* box) override;
|
|
void buttonClicked (juce::Button* button) override;
|
|
|
|
int selectedIndex = -1;
|
|
EQBand currentBand;
|
|
bool updatingFromExternal = false;
|
|
|
|
juce::Slider freqSlider, gainSlider, qSlider;
|
|
juce::Label freqLabel { {}, "FREQ" };
|
|
juce::Label gainLabel { {}, "GAIN" };
|
|
juce::Label qLabel { {}, "Q" };
|
|
juce::Label bandInfoLabel { {}, "No band selected" };
|
|
juce::ComboBox typeSelector;
|
|
juce::TextButton deleteButton { "DELETE" };
|
|
|
|
Listener* listener = nullptr;
|
|
|
|
void setupSlider (juce::Slider& s, juce::Label& l, double min, double max, double step, const char* suffix);
|
|
|
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (NodeParameterPanel)
|
|
};
|