diff --git a/CrystalizerEQ/AXIOMDesignSystem.h b/CrystalizerEQ/AXIOMDesignSystem.h
index 23b67bb..e6823e8 100644
--- a/CrystalizerEQ/AXIOMDesignSystem.h
+++ b/CrystalizerEQ/AXIOMDesignSystem.h
@@ -880,6 +880,10 @@ class PresetMenuButtonLookAndFeel : public juce::LookAndFeel_V4 {
juce::Slider::SliderLayout getSliderLayout (juce::Slider& slider) override
{
juce::Slider::SliderLayout layout;
+ if (slider.getName() == "LowBand Slope" || slider.getName() == "HighBand Slope") {
+ layout.textBoxBounds = {};
+ return layout;
+ }
auto r = slider.getLocalBounds();
@@ -1025,6 +1029,7 @@ class PresetMenuButtonLookAndFeel : public juce::LookAndFeel_V4 {
class SlopeSliderLookAndFeel : public BaseSliderLookAndFeel {
public:
static constexpr float labelPadding = 20.0f;
+
juce::Slider::SliderLayout getSliderLayout(juce::Slider& slider) override
{
juce::Slider::SliderLayout layout;
@@ -1136,20 +1141,25 @@ class PresetMenuButtonLookAndFeel : public juce::LookAndFeel_V4 {
float hoverFactor = 1.0f;
auto surfaceCol = Colours::SURFACECOLOUR;
auto accentCol = Colours::ACCENTCOLOUR;
+ auto ringCol = Colours::SURFACEHOVER;
if (isEnabled) {
- surfaceCol = isHovered ? Colours::SURFACEBYPASS : Colours::SURFACECOLOUR;
+ surfaceCol = isHovered ? Colours::SURFACEHOVER : Colours::SURFACECOLOUR;
accentCol = isHovered ? Colours::ACCENTHOVER : Colours::ACCENTCOLOUR;
+ ringCol = isHovered ? Colours::SURFACECOLOUR : Colours::SURFACEHOVER;
hoverFactor = isHovered ? 1.05f : 1.0f;
} else {
surfaceCol = Colours::SURFACEBYPASS;
accentCol = Colours::ACCENTWEAKCOLOUR;
+ ringCol = Colours::SURFACEHOVER;
}
// Einfacher Ring
g.setColour(surfaceCol);
g.fillEllipse(centreX - radius, centreY - radius, radius * 2.0f , radius * 2.0f);
- //g.drawEllipse(centreX - radius, centreY - radius, radius * 2.0f, radius * 2.0f, 2.0f);
+
+ g.setColour(ringCol);
+ g.drawEllipse(centreX - radius, centreY - radius, radius * 2.0f, radius * 2.0f, arcPathWidth);
juce::Path valueArc;
valueArc.addCentredArc(centreX, centreY, radius, radius,
@@ -1183,7 +1193,7 @@ class PresetMenuButtonLookAndFeel : public juce::LookAndFeel_V4 {
case SizeMode::Freq: return 0.8f;
case SizeMode::Q: return 0.8f;
case SizeMode::Slope: return 0.7f;
- case SizeMode::Global: return 1.0f;
+ case SizeMode::Global: return 0.8f;
case SizeMode::Mix: return 0.8f;
default: return 1.0f;
}
diff --git a/CrystalizerEQ/Builds/VisualStudio2022/CrystalizerEQ_SharedCode.vcxproj b/CrystalizerEQ/Builds/VisualStudio2022/CrystalizerEQ_SharedCode.vcxproj
index eac76fd..ff2b3ba 100644
--- a/CrystalizerEQ/Builds/VisualStudio2022/CrystalizerEQ_SharedCode.vcxproj
+++ b/CrystalizerEQ/Builds/VisualStudio2022/CrystalizerEQ_SharedCode.vcxproj
@@ -164,6 +164,7 @@
+
diff --git a/CrystalizerEQ/Builds/VisualStudio2022/CrystalizerEQ_SharedCode.vcxproj.filters b/CrystalizerEQ/Builds/VisualStudio2022/CrystalizerEQ_SharedCode.vcxproj.filters
index 6b9dbc6..6b75e19 100644
--- a/CrystalizerEQ/Builds/VisualStudio2022/CrystalizerEQ_SharedCode.vcxproj.filters
+++ b/CrystalizerEQ/Builds/VisualStudio2022/CrystalizerEQ_SharedCode.vcxproj.filters
@@ -74,6 +74,9 @@
CrystalizerEQ\Resources\Fonts
+
+ CrystalizerEQ\Resources\Icons
+
CrystalizerEQ\Resources\Icons
diff --git a/CrystalizerEQ/CrystalizerEQ.jucer b/CrystalizerEQ/CrystalizerEQ.jucer
index 901c814..6fabbab 100644
--- a/CrystalizerEQ/CrystalizerEQ.jucer
+++ b/CrystalizerEQ/CrystalizerEQ.jucer
@@ -21,6 +21,7 @@
file="Resources/Fonts/Roboto-Regular.ttf"/>
+
diff --git a/CrystalizerEQ/JuceLibraryCode/BinaryData.cpp b/CrystalizerEQ/JuceLibraryCode/BinaryData.cpp
index 08c327f..ae2aa71 100644
--- a/CrystalizerEQ/JuceLibraryCode/BinaryData.cpp
+++ b/CrystalizerEQ/JuceLibraryCode/BinaryData.cpp
@@ -11413,63 +11413,88 @@ static const unsigned char temp_binary_data_6[] =
const char* RobotoRegular_ttf = (const char*) temp_binary_data_6;
-//================== bell_icon.svg ==================
+//================== logo_icon.svg ==================
static const unsigned char temp_binary_data_7[] =
"\n"
+"";
+
+const char* logo_icon_svg = (const char*) temp_binary_data_7;
+
+//================== bell_icon.svg ==================
+static const unsigned char temp_binary_data_8[] =
+"\n"
"";
-const char* bell_icon_svg = (const char*) temp_binary_data_7;
+const char* bell_icon_svg = (const char*) temp_binary_data_8;
//================== high_cut_icon.svg ==================
-static const unsigned char temp_binary_data_8[] =
+static const unsigned char temp_binary_data_9[] =
"\n"
"";
-const char* high_cut_icon_svg = (const char*) temp_binary_data_8;
+const char* high_cut_icon_svg = (const char*) temp_binary_data_9;
//================== high_shelf_icon.svg ==================
-static const unsigned char temp_binary_data_9[] =
+static const unsigned char temp_binary_data_10[] =
"\n"
"";
-const char* high_shelf_icon_svg = (const char*) temp_binary_data_9;
+const char* high_shelf_icon_svg = (const char*) temp_binary_data_10;
//================== low_cut_icon.svg ==================
-static const unsigned char temp_binary_data_10[] =
+static const unsigned char temp_binary_data_11[] =
"\n"
"";
-const char* low_cut_icon_svg = (const char*) temp_binary_data_10;
+const char* low_cut_icon_svg = (const char*) temp_binary_data_11;
//================== low_shelf_icon.svg ==================
-static const unsigned char temp_binary_data_11[] =
+static const unsigned char temp_binary_data_12[] =
"\n"
"";
-const char* low_shelf_icon_svg = (const char*) temp_binary_data_11;
+const char* low_shelf_icon_svg = (const char*) temp_binary_data_12;
//================== preset_menu_icon.svg ==================
-static const unsigned char temp_binary_data_12[] =
+static const unsigned char temp_binary_data_13[] =
"";
-const char* preset_menu_icon_svg = (const char*) temp_binary_data_12;
+const char* preset_menu_icon_svg = (const char*) temp_binary_data_13;
//================== crystalize_button_active_icon.svg ==================
-static const unsigned char temp_binary_data_13[] =
+static const unsigned char temp_binary_data_14[] =
"\n"
"";
-const char* crystalize_button_active_icon_svg = (const char*) temp_binary_data_13;
+const char* crystalize_button_active_icon_svg = (const char*) temp_binary_data_14;
//================== crystalize_button_passive_icon.svg ==================
-static const unsigned char temp_binary_data_14[] =
+static const unsigned char temp_binary_data_15[] =
"\n"
"";
-const char* crystalize_button_passive_icon_svg = (const char*) temp_binary_data_14;
+const char* crystalize_button_passive_icon_svg = (const char*) temp_binary_data_15;
//================== bypass_icon.svg ==================
-static const unsigned char temp_binary_data_15[] =
+static const unsigned char temp_binary_data_16[] =
"\n"
"";
-const char* bypass_icon_svg = (const char*) temp_binary_data_15;
+const char* bypass_icon_svg = (const char*) temp_binary_data_16;
const char* getNamedResource (const char* resourceNameUTF8, int& numBytes);
@@ -11660,6 +11685,7 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes)
case 0xcbceafb3: numBytes = 24668; return OrbitronBold_ttf;
case 0x9c8232dc: numBytes = 24716; return OrbitronRegular_ttf;
case 0x93fe9a1e: numBytes = 146004; return RobotoRegular_ttf;
+ case 0xa297e1b2: numBytes = 1793; return logo_icon_svg;
case 0x1024555a: numBytes = 397; return bell_icon_svg;
case 0x46c5a278: numBytes = 316; return high_cut_icon_svg;
case 0x0133c050: numBytes = 420; return high_shelf_icon_svg;
@@ -11685,6 +11711,7 @@ const char* namedResourceList[] =
"OrbitronBold_ttf",
"OrbitronRegular_ttf",
"RobotoRegular_ttf",
+ "logo_icon_svg",
"bell_icon_svg",
"high_cut_icon_svg",
"high_shelf_icon_svg",
@@ -11705,6 +11732,7 @@ const char* originalFilenames[] =
"Orbitron-Bold.ttf",
"Orbitron-Regular.ttf",
"Roboto-Regular.ttf",
+ "logo_icon.svg",
"bell_icon.svg",
"high_cut_icon.svg",
"high_shelf_icon.svg",
diff --git a/CrystalizerEQ/JuceLibraryCode/BinaryData.h b/CrystalizerEQ/JuceLibraryCode/BinaryData.h
index 8f36356..1470c75 100644
--- a/CrystalizerEQ/JuceLibraryCode/BinaryData.h
+++ b/CrystalizerEQ/JuceLibraryCode/BinaryData.h
@@ -29,6 +29,9 @@ namespace BinaryData
extern const char* RobotoRegular_ttf;
const int RobotoRegular_ttfSize = 146004;
+ extern const char* logo_icon_svg;
+ const int logo_icon_svgSize = 1793;
+
extern const char* bell_icon_svg;
const int bell_icon_svgSize = 397;
@@ -57,7 +60,7 @@ namespace BinaryData
const int bypass_icon_svgSize = 406;
// Number of elements in the namedResourceList and originalFileNames arrays.
- const int namedResourceListSize = 16;
+ const int namedResourceListSize = 17;
// Points to the start of a list of resource names.
extern const char* namedResourceList[];
diff --git a/CrystalizerEQ/PluginEditor.cpp b/CrystalizerEQ/PluginEditor.cpp
index f2ad98e..31fa6ee 100644
--- a/CrystalizerEQ/PluginEditor.cpp
+++ b/CrystalizerEQ/PluginEditor.cpp
@@ -52,6 +52,9 @@ void CrystalizerEQAudioProcessorEditor::setupSliders() {
&peak3FreqSlider, &peak3QSlider, &highBandFreqSlider, &highBandQSlider}) {
s->setLookAndFeel(freqQLookAndFeel.get());
}
+
+ lowBandSlopeSlider.setTextBoxStyle(juce::Slider::NoTextBox, true, 0, 0);
+ highBandSlopeSlider.setTextBoxStyle(juce::Slider::NoTextBox, true, 0, 0);
}
//endregion setupSliders
@@ -130,7 +133,7 @@ void CrystalizerEQAudioProcessorEditor::setupDisplayNames() {
testNoiseSlider.setTextValueSuffix(" Gain");
//lowBandFreqSlider.setTextValueSuffix ("\nHz");
- lowBandSlopeSlider.setTextValueSuffix ("\ndB/Oct");
+ //lowBandSlopeSlider.setTextValueSuffix ("\ndB/Oct");
lowBandGainSlider.setTextValueSuffix("\ndB");
//lowBandQSlider.setTextValueSuffix ("\nQ");
@@ -151,7 +154,7 @@ void CrystalizerEQAudioProcessorEditor::setupDisplayNames() {
//highBandFreqSlider.setTextValueSuffix ("\nHz");
- highBandSlopeSlider.setTextValueSuffix ("\ndB/Oct");
+ //highBandSlopeSlider.setTextValueSuffix ("\ndB/Oct");
highBandGainSlider.setTextValueSuffix("\ndB");
// highBandQSlider.setTextValueSuffix ("\nQ");
@@ -416,7 +419,9 @@ void CrystalizerEQAudioProcessorEditor::addComponentsToLayout() {
lowBandSlopeSlider.addAndMakeVisible(low24);
lowBandSlopeSlider.addAndMakeVisible(low36);
lowBandSlopeSlider.addAndMakeVisible(low48);
+
lowFilterArea.addAndMakeVisible(lowBandSlopeSlider);
+ lowFilterArea.addAndMakeVisible(lowdBOctLabel);
lowFilterArea.addAndMakeVisible(lowBandGainSlider);
lowFilterArea.addAndMakeVisible(lowBandQSlider);
@@ -478,6 +483,8 @@ void CrystalizerEQAudioProcessorEditor::addComponentsToLayout() {
highBandSlopeSlider.addAndMakeVisible(high36);
highBandSlopeSlider.addAndMakeVisible(high48);
highFilterArea.addAndMakeVisible(highBandSlopeSlider);
+ highFilterArea.addAndMakeVisible(highdBOctLabel);
+
highFilterArea.addAndMakeVisible(highBandGainSlider);
highFilterArea.addAndMakeVisible(highBandQSlider);
@@ -486,13 +493,14 @@ void CrystalizerEQAudioProcessorEditor::addComponentsToLayout() {
}
- addAndMakeVisible(footerBar);
- footerBar.addAndMakeVisible(globalControlArea);
- globalControlArea.addAndMakeVisible(inputLabel);
- globalControlArea.addAndMakeVisible(outputLabel);
+
+
+
globalControlArea.addAndMakeVisible(inputSlider);
globalControlArea.addAndMakeVisible(outputSlider);
globalControlArea.addAndMakeVisible(masterBypassButton);
+ footerBar.addAndMakeVisible(globalControlArea);
+ addAndMakeVisible(footerBar);
}
//endregion addComponentsToLayout
@@ -518,6 +526,7 @@ void CrystalizerEQAudioProcessorEditor::setupLabels() {
setupLabel(low24, "24");
setupLabel(low36, "36");
setupLabel(low48, "48");
+ setupLabel(lowdBOctLabel, "db/Oct");
//PEAK 1
setupLabel (peak1FreqLabel,"Low-Mid\nHz");
@@ -544,6 +553,8 @@ void CrystalizerEQAudioProcessorEditor::setupLabels() {
setupLabel(high24, "24");
setupLabel(high36, "36");
setupLabel(high48, "48");
+ setupLabel(highdBOctLabel, "db/Oct");
+
setupLabel(presetBoxLabel, "Presets");
@@ -754,6 +765,11 @@ CrystalizerEQAudioProcessorEditor::CrystalizerEQAudioProcessorEditor (Crystalize
setupSliders();
initPresetSystem();
+
+ auto logoIcon = juce::XmlDocument::parse (BinaryData::logo_icon_svg);
+ if (logoIcon != nullptr)
+ logoDrawable = juce::Drawable::createFromSVG (*logoIcon);
+
addAndMakeVisible (testNoiseButton);
testNoiseButton.onClick = [this]() {
@@ -861,8 +877,11 @@ void CrystalizerEQAudioProcessorEditor::paint (juce::Graphics& g)
auto hBH = hB.getHeight();
auto hBPad = ((hBY + mPY) - hBH) / 2;
g.fillRect(hBX, hBY, hBW, mPY - hBPad);
- //paintBorderLines(g);
+ const auto logoArea = hB.toFloat().reduced(hBPad);
+ logoDrawable->drawWithin(g, logoArea,
+ juce::RectanglePlacement::xRight, // oder xLeft, yTop etc.
+ 1.0f);
g.setColour(Colours::SURFACECOLOUR);
const auto pA = getLocalArea(&presetArea, presetArea.getLocalBounds());
@@ -871,7 +890,10 @@ void CrystalizerEQAudioProcessorEditor::paint (juce::Graphics& g)
auto pAWidth = pA.getWidth();
auto pAHeight = pA.getHeight();
g.fillRoundedRectangle(pAX, pAY - 10.f, pAWidth, pAHeight + 10.f, 10.0f);
- //paintBorderLines(g);
+
+
+
+
const auto fA = getLocalArea(&filterArea, filterArea.getLocalBounds());
const int fABorderWidth = 3;
@@ -888,13 +910,13 @@ void CrystalizerEQAudioProcessorEditor::paint (juce::Graphics& g)
g.setColour(Colours::BACKGROUNDBYPASS);
g.fillRect(fA);
- paintBorderLines(g);
//paintModeBoxBorders(g);
g.setColour(Colours::SURFACEBYPASS);
const auto fB = getLocalArea(&footerBar, footerBar.getLocalBounds());
g.fillRect(fB);
+ paintBorderLines(g);
if constexpr (false) // -> auf false setzen, wenn nicht gebraucht
@@ -1054,6 +1076,25 @@ void CrystalizerEQAudioProcessorEditor::paintBorderLines(juce::Graphics &g) {
g.drawVerticalLine(x,center - halfLen, center + halfLen);
}
+ g.setColour(DesignSystem::Colours::SURFACECOLOUR);
+ auto prevRightGlobal = (float) globalControlArea.getRight();
+ for (auto* c : globalControlArea.getChildren()) {
+ if (c == &inputSlider) continue;
+ if (c == &masterBypassButton) continue;
+
+ const auto area = getLocalArea(c, c->getLocalBounds());
+ const float xAvg = ((float) area.getX() - prevRightGlobal) / 2;
+ const int x = area.getX() - xAvg;
+ prevRightGlobal = (float) c->getRight();
+
+ const auto top = (float) area.getY();
+ const auto bot = (float) area.getBottom();
+
+
+ const float center = (top + bot) * 0.5f;
+ const float halfLen = (bot - top) * 0.375f;
+ g.drawVerticalLine(x,center - halfLen, center + halfLen);
+ }
}
//endregion paintBorderLines
@@ -1073,6 +1114,7 @@ void CrystalizerEQAudioProcessorEditor::setKnobVisibility() {
lowBandFreqLabel.setEnabled (lowMode >= 1);
lowBandSlopeSlider.setEnabled (lowMode == 1);
lowBandSlopeLabel.setEnabled (lowMode == 1);
+ lowdBOctLabel.setEnabled (lowMode == 1);
lowBandGainSlider.setEnabled(lowMode >= 2);
lowBandGainLabel .setEnabled(lowMode >= 2);
lowBandQSlider .setEnabled(lowMode >= 1);
@@ -1090,6 +1132,7 @@ void CrystalizerEQAudioProcessorEditor::setKnobVisibility() {
highBandFreqLabel.setEnabled (highMode >= 1);
highBandSlopeSlider.setEnabled (highMode == 1);
highBandSlopeLabel.setEnabled (highMode == 1);
+ highdBOctLabel.setEnabled (highMode == 1);
highBandGainSlider.setEnabled(highMode >= 2);
highBandGainLabel .setEnabled(highMode >= 2);
highBandQSlider .setEnabled(highMode >= 1);
@@ -1394,6 +1437,10 @@ void CrystalizerEQAudioProcessorEditor::setupLowBandLayout() {
Layout::area(lowBandSlopeLabel, 3, 1, 4, 2)
.withMargin(juce::GridItem::Margin(-offSetToGainTop / 1.5f, 0, 0, 0)),
+ Layout::area(lowdBOctLabel, 3, 1, 4, 2)
+ .withAlignSelf(juce::GridItem::AlignSelf::center)
+ .withJustifySelf(juce::GridItem::JustifySelf::center),
+
});
@@ -1630,6 +1677,10 @@ void CrystalizerEQAudioProcessorEditor::setupHighBandLayout() {
Layout::area(highBandSlopeLabel, 3, 3, 4, 4)
.withMargin(juce::GridItem::Margin(-offSetToGainTop / 1.5f, 0, 0, 0)),
+ Layout::area(highdBOctLabel, 3, 3, 4, 4)
+ .withAlignSelf(juce::GridItem::AlignSelf::center)
+ .withJustifySelf(juce::GridItem::JustifySelf::center),
+
});
const auto modeBoxBounds = lowBandModeBox.getLocalBounds();
@@ -1668,7 +1719,7 @@ void CrystalizerEQAudioProcessorEditor::setupFooter() {
const auto refH = getReferenceCell()[1];
Layout::GridSpec footerSpec{
- /* cols */ { Layout::fr(1), Layout::fr(1), Layout::pxTrack(footerWidth / 3.0f) },
+ /* cols */ { Layout::fr(1), Layout::fr(1), Layout::fr(1) },
/* rows */ { Layout::fr(1) },
/* colGap */ Spacing::SizeMode::XS,
/* rowGap */ Spacing::SizeMode::XS,
@@ -1682,10 +1733,12 @@ void CrystalizerEQAudioProcessorEditor::setupFooter() {
const auto globalControlAreaWidth = static_cast(globalControlArea.getWidth());
const auto globalControlAreaHeight = static_cast(globalControlArea.getHeight());
const auto globalControlColWidth = globalControlAreaWidth / 3.0f;
+ const auto sliderRadius = outputSlider.getWidth() / 2.0f;
+ const auto sliderWidth = outputSlider.getWidth();
Layout::GridSpec globalControlAreaSpec{
- /* cols */ { Layout::fr(1), Layout::pxTrack(globalControlColWidth), Layout::fr(1) },
+ /* cols */ { Layout::fr(1), Layout::fr(1), Layout::fr(1) },
/* rows */ { Layout::fr(1)},
/* colGap */ Spacing::SizeMode::XS,
/* rowGap */ Spacing::SizeMode::XS,
@@ -1694,19 +1747,26 @@ void CrystalizerEQAudioProcessorEditor::setupFooter() {
Layout::grid(globalControlAreaBounds, globalControlAreaSpec, {
//TODO: Bring components closer together
- Layout::area(inputSlider, 1, 2, 3, 3)
- .withWidth(refW * globalMod * 0.8f)
- .withHeight(refH * globalMod * 0.8f)
+
+ Layout::area(outputSlider, 1, 2, 3, 3)
+ .withWidth(refW * globalMod )
+ .withHeight(refH * globalMod )
+ .withMargin(juce::GridItem::Margin(0, 0, 0, sliderRadius * 6))
.withAlignSelf(juce::GridItem::AlignSelf::center)
.withJustifySelf(juce::GridItem::JustifySelf::center),
- Layout::area(outputSlider, 1, 3, 3, 4)
- .withWidth(refW * globalMod * 0.8f)
- .withHeight(refH * globalMod * 0.8f)
+
+ Layout::area(inputSlider, 1, 1, 3, 2)
+ .withWidth(refW * globalMod )
+ .withHeight(refH * globalMod )
+ .withMargin(juce::GridItem::Margin(0, 0, 0, sliderRadius * 10))
.withAlignSelf(juce::GridItem::AlignSelf::center)
.withJustifySelf(juce::GridItem::JustifySelf::center),
- Layout::area(masterBypassButton, 1, 1, 3, 2),
+ Layout::area(masterBypassButton, 1, 3, 3, 4)
+ .withWidth(sliderWidth)
+
+ .withMargin(juce::GridItem::Margin(0, 0, 0, sliderRadius * 2)),
});
}
diff --git a/CrystalizerEQ/PluginEditor.h b/CrystalizerEQ/PluginEditor.h
index 8b648fe..f5f8654 100644
--- a/CrystalizerEQ/PluginEditor.h
+++ b/CrystalizerEQ/PluginEditor.h
@@ -180,21 +180,21 @@ public:
juce::Label titleLabel, testNoiseLabel,
lowBandFreqLabel, lowBandSlopeLabel, lowBandGainLabel, lowBandQLabel, lowBandModeLabel,
- low12, low24, low36, low48,
+ low12, low24, low36, low48, lowdBOctLabel,
peak1FreqLabel, peak1GainLabel, peak1QLabel,
peak2FreqLabel, peak2GainLabel, peak2QLabel,
peak3FreqLabel, peak3GainLabel, peak3QLabel,
highBandFreqLabel, highBandSlopeLabel, highBandGainLabel, highBandQLabel, highBandModeLabel,
- high12, high24, high36, high48,
+ high12, high24, high36, high48, highdBOctLabel,
inputLabel, outputLabel,
presetBoxLabel;
const juce::Array sliderLabels = {
- &lowBandFreqLabel, &lowBandSlopeLabel, &lowBandGainLabel, &lowBandQLabel, &lowBandModeLabel,
+ &lowBandFreqLabel, &lowBandSlopeLabel, &lowBandGainLabel, &lowBandQLabel, &lowBandModeLabel, &lowdBOctLabel,
&peak1FreqLabel, &peak1GainLabel, &peak1QLabel,
&peak2FreqLabel, &peak2GainLabel, &peak2QLabel,
&peak3FreqLabel, &peak3GainLabel, &peak3QLabel,
- &highBandFreqLabel, &highBandSlopeLabel, &highBandGainLabel, &highBandQLabel, &highBandModeLabel,
+ &highBandFreqLabel, &highBandSlopeLabel, &highBandGainLabel, &highBandQLabel, &highBandModeLabel, &highdBOctLabel,
&inputLabel, &outputLabel
};
const juce::Array slopeLabels = {
@@ -338,5 +338,7 @@ private:
bool isAnimatingCrystalize = false;
bool isFadingToActive = false;
+ std::unique_ptr logoDrawable;
+
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CrystalizerEQAudioProcessorEditor)
};