Deleted previous design and layout.
Added new header with Design System Class. TODO: Complete new Design System Class and test it in the Editor.
This commit is contained in:
parent
e4d1c770e2
commit
d3175800d0
176
CrystalizerEQ/AXIOMDesignSystem.h
Normal file
176
CrystalizerEQ/AXIOMDesignSystem.h
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
|
||||||
|
|
||||||
|
#ifndef AXIOMDESIGNSYSTEM_H
|
||||||
|
#define AXIOMDESIGNSYSTEM_H
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace AXIOM {
|
||||||
|
class DesignSystem : public juce::LookAndFeel_V4 {
|
||||||
|
public:
|
||||||
|
DesignSystem();
|
||||||
|
~DesignSystem() override = default;
|
||||||
|
|
||||||
|
struct Colours {
|
||||||
|
//=====================BASE-COLORS========================//
|
||||||
|
static inline const juce::Colour ACCENTCOLOUR = juce::Colour::fromRGB(86, 254, 255); // #56FEFF
|
||||||
|
static inline const juce::Colour BACKGROUNDCOLOUR = juce::Colour::fromRGB(51, 51, 51); // #333333
|
||||||
|
static inline const juce::Colour FOREGROUNDCOLOUR = juce::Colour::fromRGB(252, 250, 249); // #FCFAF9
|
||||||
|
static inline const juce::Colour SURFACECOLOUR = juce::Colour::fromRGB(31, 31, 31); // #1F1F1F
|
||||||
|
static inline const juce::Colour MUTEDTEXTCOLOUR = juce::Colour::fromRGB(207, 207, 207); // #CFCFCF
|
||||||
|
static inline const juce::Colour ACCENTWEAKCOLOUR = juce::Colour::fromRGB(61, 183, 183); // #3DB7B7
|
||||||
|
//=====================HOVER-COLORS========================//
|
||||||
|
static inline const juce::Colour ACCENTHOVER = juce::Colour::fromRGB(110, 255, 255); // #6EFFFF
|
||||||
|
static inline const juce::Colour BACKGROUNDHOVER = juce::Colour::fromRGB(66, 66, 66); // #424242
|
||||||
|
static inline const juce::Colour FOREGROUNDHOVER = juce::Colour::fromRGB(255, 255, 255); // #FFFFFF
|
||||||
|
static inline const juce::Colour SURFACEHOVER = juce::Colour::fromRGB(42, 42, 42); // #2A2A2A
|
||||||
|
static inline const juce::Colour MUTEDTEXTHOVER = juce::Colour::fromRGB(230, 230, 230); // #E6E6E6
|
||||||
|
static inline const juce::Colour ACCENTWEAKHOVER = juce::Colour::fromRGB(82, 210, 210); // #52D2D2
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Typography {
|
||||||
|
inline static const juce::String primaryFamily { "Orbitron Bold" };
|
||||||
|
inline static const juce::String secondaryFamily { "Roboto" };
|
||||||
|
inline static const juce::String displayFamily { "Horizon" };
|
||||||
|
inline static const juce::String monoFamily { "JetBrains Mono" };
|
||||||
|
|
||||||
|
struct Scale {
|
||||||
|
float basePx = 14.0f;
|
||||||
|
float ratio = 1.125f;
|
||||||
|
|
||||||
|
float sizeFor (int step) const noexcept
|
||||||
|
{
|
||||||
|
// step = 0 => basePx, step = 1 => base*ratio, step = -1 => base/ratio, ...
|
||||||
|
return basePx * std::pow (ratio, static_cast<float>(step));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
inline static Scale scale {};
|
||||||
|
|
||||||
|
enum class Style
|
||||||
|
{
|
||||||
|
Display,
|
||||||
|
H1, H2, H3,
|
||||||
|
Subtitle,
|
||||||
|
Body,
|
||||||
|
Small,
|
||||||
|
Caption,
|
||||||
|
Button,
|
||||||
|
Mono,
|
||||||
|
Overline
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TextToken
|
||||||
|
{
|
||||||
|
juce::String family;
|
||||||
|
int stepFromBase;
|
||||||
|
bool bold = false;
|
||||||
|
bool italic = false;
|
||||||
|
bool uppercase = false;
|
||||||
|
float letterSpacing = 0.0f;
|
||||||
|
float lineHeight = 1.25f;
|
||||||
|
bool useMonospace = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
static TextToken getToken (Style style) noexcept
|
||||||
|
{
|
||||||
|
switch (style)
|
||||||
|
{
|
||||||
|
case Style::Display: return { displayFamily, 5, true, false, false, 0.0f, 1.15f, false };
|
||||||
|
case Style::H1: return { primaryFamily, 4, true, false, false, 0.0f, 1.15f, false };
|
||||||
|
case Style::H2: return { primaryFamily, 3, true, false, false, 0.0f, 1.20f, false };
|
||||||
|
case Style::H3: return { primaryFamily, 2, false, false, false, 0.0f, 1.20f, false };
|
||||||
|
case Style::Subtitle: return { primaryFamily, 1, false, false, false, 0.01f,1.25f, false };
|
||||||
|
case Style::Body: return { primaryFamily, 0, false, false, false, 0.0f, 1.35f, false };
|
||||||
|
case Style::Small: return { primaryFamily, -1, false, false, false, 0.0f, 1.35f, false };
|
||||||
|
case Style::Caption: return { primaryFamily, -2, false, false, false, 0.02f,1.40f, false };
|
||||||
|
case Style::Button: return { primaryFamily, 0, true, false, false, 0.02f,1.10f, false };
|
||||||
|
case Style::Mono: return { monoFamily, -1, false, false, false, 0.0f, 1.30f, true };
|
||||||
|
case Style::Overline: return { primaryFamily, -3, true, false, true, 0.06f,1.20f, false };
|
||||||
|
}
|
||||||
|
return { primaryFamily, 0, false, false, false, 0.0f, 1.3f, false };
|
||||||
|
}
|
||||||
|
|
||||||
|
static juce::Font getFont (Style style, float uiScale = 1.0f)
|
||||||
|
{
|
||||||
|
const auto t = getToken (style);
|
||||||
|
const auto fam = t.family;
|
||||||
|
auto height = scale.sizeFor (t.stepFromBase) * uiScale;
|
||||||
|
|
||||||
|
juce::Font f { fam, height, juce::Font::plain };
|
||||||
|
f.setBold (t.bold);
|
||||||
|
f.setItalic (t.italic);
|
||||||
|
f.setExtraKerningFactor (t.letterSpacing);
|
||||||
|
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void applyToLabel (juce::Label& label, Style style, float uiScale = 1.0f)
|
||||||
|
{
|
||||||
|
label.setFont (getFont (style, uiScale));
|
||||||
|
|
||||||
|
if (getToken(style).uppercase)
|
||||||
|
label.setText (label.getText().toUpperCase(), juce::NotificationType::dontSendNotification);
|
||||||
|
|
||||||
|
label.setMinimumHorizontalScale (1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
static juce::TextLayout createTextLayout (juce::String text,
|
||||||
|
juce::Rectangle<float> bounds,
|
||||||
|
Style style,
|
||||||
|
juce::Colour colour,
|
||||||
|
float uiScale = 1.0f,
|
||||||
|
juce::Justification just = juce::Justification::topLeft)
|
||||||
|
{
|
||||||
|
const auto token = getToken (style);
|
||||||
|
const auto font = getFont (style, uiScale);
|
||||||
|
|
||||||
|
juce::AttributedString as;
|
||||||
|
as.setJustification (just);
|
||||||
|
|
||||||
|
if (token.uppercase)
|
||||||
|
text = text.toUpperCase();
|
||||||
|
|
||||||
|
as.append (text, font, colour);
|
||||||
|
|
||||||
|
juce::TextLayout tl;
|
||||||
|
tl.createLayout (as, bounds.getWidth());
|
||||||
|
return tl;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Spacing {};
|
||||||
|
|
||||||
|
struct Shape {};
|
||||||
|
|
||||||
|
struct Shadows {};
|
||||||
|
|
||||||
|
struct Opacity {};
|
||||||
|
|
||||||
|
struct Motion {};
|
||||||
|
|
||||||
|
struct Components {
|
||||||
|
struct ButtonStyles {};
|
||||||
|
|
||||||
|
struct SliderStyles {};
|
||||||
|
|
||||||
|
struct LabelStyles {};
|
||||||
|
|
||||||
|
struct TextInputStyles {};
|
||||||
|
|
||||||
|
struct ComboBoxStyles {};
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Assets {};
|
||||||
|
|
||||||
|
struct Layout {};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif //AXIOMDESIGNSYSTEM_H
|
||||||
|
|
||||||
@ -24,6 +24,7 @@ juce_add_plugin(CrystalizerEQ
|
|||||||
target_sources(CrystalizerEQ PRIVATE
|
target_sources(CrystalizerEQ PRIVATE
|
||||||
PluginProcessor.cpp
|
PluginProcessor.cpp
|
||||||
PluginEditor.cpp
|
PluginEditor.cpp
|
||||||
|
AXIOMDesignSystem.h
|
||||||
)
|
)
|
||||||
|
|
||||||
# C++20 aktivieren
|
# C++20 aktivieren
|
||||||
|
|||||||
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include "PluginProcessor.h"
|
#include "PluginProcessor.h"
|
||||||
#include "PluginEditor.h"
|
#include "PluginEditor.h"
|
||||||
|
#include "AXIOMDesignSystem.h"
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
CrystalizerEQAudioProcessorEditor::CrystalizerEQAudioProcessorEditor (CrystalizerEQAudioProcessor& p)
|
CrystalizerEQAudioProcessorEditor::CrystalizerEQAudioProcessorEditor (CrystalizerEQAudioProcessor& p)
|
||||||
@ -20,7 +21,6 @@ CrystalizerEQAudioProcessorEditor::CrystalizerEQAudioProcessorEditor (Crystalize
|
|||||||
|
|
||||||
startTimerHz(60);
|
startTimerHz(60);
|
||||||
|
|
||||||
//TEST12345
|
|
||||||
|
|
||||||
|
|
||||||
auto setupLabel = [] (juce::Label& label, const juce::String& text)
|
auto setupLabel = [] (juce::Label& label, const juce::String& text)
|
||||||
@ -249,8 +249,7 @@ CrystalizerEQAudioProcessorEditor::CrystalizerEQAudioProcessorEditor (Crystalize
|
|||||||
peak1BypassButton.setName("peak1Bypass");
|
peak1BypassButton.setName("peak1Bypass");
|
||||||
peak1BypassButton.setButtonText("Low-Mid Bypass");
|
peak1BypassButton.setButtonText("Low-Mid Bypass");
|
||||||
addAndMakeVisible(peak1BypassButton);
|
addAndMakeVisible(peak1BypassButton);
|
||||||
peak1BypassButton.setColour (juce::ToggleButton::textColourId, juce::Colours::black);
|
|
||||||
peak1BypassButton.setColour(juce::ToggleButton::tickColourId, juce::Colours::black);
|
|
||||||
|
|
||||||
|
|
||||||
peak2FreqSlider.setTextValueSuffix(" Hz");
|
peak2FreqSlider.setTextValueSuffix(" Hz");
|
||||||
@ -259,8 +258,7 @@ CrystalizerEQAudioProcessorEditor::CrystalizerEQAudioProcessorEditor (Crystalize
|
|||||||
peak2BypassButton.setName("peak2Bypass");
|
peak2BypassButton.setName("peak2Bypass");
|
||||||
peak2BypassButton.setButtonText("Mid Bypass");
|
peak2BypassButton.setButtonText("Mid Bypass");
|
||||||
addAndMakeVisible(peak2BypassButton);
|
addAndMakeVisible(peak2BypassButton);
|
||||||
peak2BypassButton.setColour (juce::ToggleButton::textColourId, juce::Colours::black);
|
|
||||||
peak2BypassButton.setColour(juce::ToggleButton::tickColourId, juce::Colours::black);
|
|
||||||
|
|
||||||
|
|
||||||
peak3FreqSlider.setTextValueSuffix(" Hz");
|
peak3FreqSlider.setTextValueSuffix(" Hz");
|
||||||
@ -269,8 +267,7 @@ CrystalizerEQAudioProcessorEditor::CrystalizerEQAudioProcessorEditor (Crystalize
|
|||||||
peak3BypassButton.setName("peak3Bypass");
|
peak3BypassButton.setName("peak3Bypass");
|
||||||
peak3BypassButton.setButtonText("High-Mid Bypass");
|
peak3BypassButton.setButtonText("High-Mid Bypass");
|
||||||
addAndMakeVisible(peak3BypassButton);
|
addAndMakeVisible(peak3BypassButton);
|
||||||
peak3BypassButton.setColour (juce::ToggleButton::textColourId, juce::Colours::black);
|
|
||||||
peak3BypassButton.setColour(juce::ToggleButton::tickColourId, juce::Colours::black);
|
|
||||||
|
|
||||||
highBandFreqSlider.setTextValueSuffix (" Hz");
|
highBandFreqSlider.setTextValueSuffix (" Hz");
|
||||||
highBandSlopeSlider.setTextValueSuffix (" dB/Oct");
|
highBandSlopeSlider.setTextValueSuffix (" dB/Oct");
|
||||||
@ -334,7 +331,7 @@ CrystalizerEQAudioProcessorEditor::CrystalizerEQAudioProcessorEditor (Crystalize
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//TODO: DESIGN CHECKBOXES
|
||||||
for (auto* b : {&peak1BypassButton, &peak2BypassButton, &peak3BypassButton, &crystalizeButton, &masterBypassButton}) {
|
for (auto* b : {&peak1BypassButton, &peak2BypassButton, &peak3BypassButton, &crystalizeButton, &masterBypassButton}) {
|
||||||
b->onClick = [this, b]() {
|
b->onClick = [this, b]() {
|
||||||
juce::String paramID; // nimm juce::String statt std::string
|
juce::String paramID; // nimm juce::String statt std::string
|
||||||
@ -347,6 +344,9 @@ CrystalizerEQAudioProcessorEditor::CrystalizerEQAudioProcessorEditor (Crystalize
|
|||||||
|
|
||||||
else {return; }
|
else {return; }
|
||||||
|
|
||||||
|
b->setColour(juce::ToggleButton::textColourId, juce::Colours::black);
|
||||||
|
b->setColour(juce::ToggleButton::tickColourId, juce::Colours::black);
|
||||||
|
|
||||||
if (auto* param = audioProcessor.apvts.getParameter(paramID))
|
if (auto* param = audioProcessor.apvts.getParameter(paramID))
|
||||||
{
|
{
|
||||||
const bool isToggled = b->getToggleState();
|
const bool isToggled = b->getToggleState();
|
||||||
@ -444,8 +444,8 @@ void CrystalizerEQAudioProcessorEditor::paint (juce::Graphics& g)
|
|||||||
{
|
{
|
||||||
// (Our component is opaque, so we must completely fill the background with a solid colour)
|
// (Our component is opaque, so we must completely fill the background with a solid colour)
|
||||||
// fill the whole window white
|
// fill the whole window white
|
||||||
g.fillAll (juce::Colour::fromString("#333333"));
|
g.fillAll (AXIOM::DesignSystem::Colours::BACKGROUNDCOLOUR);
|
||||||
g.setColour (juce::Colour::fromString("#fcfaf9"));
|
g.setColour (AXIOM::DesignSystem::Colours::FOREGROUNDCOLOUR);
|
||||||
g.setFont (15.0f);
|
g.setFont (15.0f);
|
||||||
g.drawFittedText ("CrystalizerEQ", getLocalBounds().removeFromTop(20),
|
g.drawFittedText ("CrystalizerEQ", getLocalBounds().removeFromTop(20),
|
||||||
juce::Justification::centred, 1);
|
juce::Justification::centred, 1);
|
||||||
@ -480,7 +480,7 @@ void CrystalizerEQAudioProcessorEditor::paint (juce::Graphics& g)
|
|||||||
{
|
{
|
||||||
const int n = (int) spectrumAnalyzer.renderValuesDb.size();
|
const int n = (int) spectrumAnalyzer.renderValuesDb.size();
|
||||||
|
|
||||||
g.setColour(juce::Colour::fromString("#56FEFF"));
|
g.setColour(AXIOM::DesignSystem::Colours::ACCENTCOLOUR);
|
||||||
|
|
||||||
juce::Path eqCurve;
|
juce::Path eqCurve;
|
||||||
|
|
||||||
@ -531,7 +531,7 @@ void CrystalizerEQAudioProcessorEditor::paint (juce::Graphics& g)
|
|||||||
area.lineTo(r.getX(), r.getBottom());
|
area.lineTo(r.getX(), r.getBottom());
|
||||||
area.closeSubPath();
|
area.closeSubPath();
|
||||||
|
|
||||||
g.setColour(juce::Colour::fromString("#56FEFF").withAlpha(0.2f));
|
g.setColour(AXIOM::DesignSystem::Colours::ACCENTCOLOUR.withAlpha(0.2f));;
|
||||||
g.fillPath(area);
|
g.fillPath(area);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -583,78 +583,10 @@ void CrystalizerEQAudioProcessorEditor::resized()
|
|||||||
// This is generally where you'll want to lay out the positions of any
|
// This is generally where you'll want to lay out the positions of any
|
||||||
// subcomponents in your editor.
|
// subcomponents in your editor.
|
||||||
|
|
||||||
// sets the position and size of the slider with arguments (x, y, width, height)
|
|
||||||
auto content = getLocalBounds().reduced(10);
|
|
||||||
|
|
||||||
// untere Leiste für Buttons/Combos
|
//TODO: PLACE ALL KNOBS AND BUILD FUNCTIONS FOR THEIR DESIGN
|
||||||
auto bottom = content.removeFromBottom(56);
|
/*i = place(i, &testNoiseLabel, &testNoiseSlider);
|
||||||
|
|
||||||
// Grid-Parameter (gerne anpassen)
|
|
||||||
const int cellW = 120; // Zielbreite pro „Knopf“ (Label+Slider)
|
|
||||||
const int cellH = 130; // Zielhöhe pro „Knopf“
|
|
||||||
const int labelH = 22; // Labelhöhe
|
|
||||||
const int cols = std::max(1, content.getWidth() / cellW); // dynamisch je nach Fensterbreite
|
|
||||||
|
|
||||||
analyzerArea = content.removeFromTop(160);
|
|
||||||
// Helper zum Platzieren (wrappt automatisch)
|
|
||||||
auto place = [&](int idx, juce::Label* label, juce::Slider* slider, juce::Button* button = nullptr, juce::ComboBox *combobox = nullptr, juce::TextEditor *editor = nullptr)
|
|
||||||
{
|
|
||||||
const bool anyVisible =
|
|
||||||
(label && label ->isVisible()) ||
|
|
||||||
(slider && slider->isVisible()) ||
|
|
||||||
(button && button->isVisible()) ||
|
|
||||||
(combobox && combobox->isVisible()) ||
|
|
||||||
(editor && editor->isVisible());
|
|
||||||
|
|
||||||
if (!anyVisible)
|
|
||||||
return idx;
|
|
||||||
|
|
||||||
const int col = idx % cols;
|
|
||||||
const int row = idx / cols;
|
|
||||||
|
|
||||||
const int x = content.getX() + col * cellW;
|
|
||||||
const int y = content.getY() + row * cellH;
|
|
||||||
|
|
||||||
// Label (optional)
|
|
||||||
if (label)
|
|
||||||
label->setBounds(x + 6, y, cellW - 12, labelH);
|
|
||||||
|
|
||||||
const int topOffset = (label ? labelH : 0);
|
|
||||||
|
|
||||||
// Slider (optional)
|
|
||||||
if (slider)
|
|
||||||
slider->setBounds(x + 6, y + topOffset, cellW - 12, cellH - topOffset - 8);
|
|
||||||
|
|
||||||
// Button (optional)
|
|
||||||
if (button)
|
|
||||||
{
|
|
||||||
const int btnY = y + topOffset;
|
|
||||||
const int btnH = slider ? labelH : (cellH - topOffset - 8);
|
|
||||||
button->setBounds(x + 6, btnY, cellW - 12, btnH);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ComboBox (optional)
|
|
||||||
if (combobox)
|
|
||||||
{
|
|
||||||
const int cbY = y + topOffset;
|
|
||||||
const int cbH = labelH; // oder wie Button behandeln
|
|
||||||
combobox->setBounds(x + 6, cbY, cellW - 12, cbH);
|
|
||||||
}
|
|
||||||
if (editor)
|
|
||||||
{
|
|
||||||
const int cbY = y + topOffset;
|
|
||||||
const int cbH = labelH; // oder wie Button behandeln
|
|
||||||
editor->setBounds(x + 6, cbY, cellW - 12, cbH);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return idx + 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
i = place(i, &testNoiseLabel, &testNoiseSlider);
|
|
||||||
|
|
||||||
i = place(i, nullptr, nullptr, nullptr, &lowBandModeBox);
|
|
||||||
i = place(i, &lowBandFreqLabel, &lowBandFreqSlider);
|
i = place(i, &lowBandFreqLabel, &lowBandFreqSlider);
|
||||||
i = place(i, &lowBandSlopeLabel,&lowBandSlopeSlider);
|
i = place(i, &lowBandSlopeLabel,&lowBandSlopeSlider);
|
||||||
i = place(i, &lowBandGainLabel, &lowBandGainSlider);
|
i = place(i, &lowBandGainLabel, &lowBandGainSlider);
|
||||||
@ -663,19 +595,15 @@ void CrystalizerEQAudioProcessorEditor::resized()
|
|||||||
i = place(i, &peak1FreqLabel, &peak1FreqSlider);
|
i = place(i, &peak1FreqLabel, &peak1FreqSlider);
|
||||||
i = place(i, &peak1GainLabel, &peak1GainSlider);
|
i = place(i, &peak1GainLabel, &peak1GainSlider);
|
||||||
i = place(i, &peak1QLabel, &peak1QSlider);
|
i = place(i, &peak1QLabel, &peak1QSlider);
|
||||||
i = place(i, nullptr, nullptr, &peak1BypassButton);
|
|
||||||
|
|
||||||
i = place(i, &peak2FreqLabel, &peak2FreqSlider);
|
i = place(i, &peak2FreqLabel, &peak2FreqSlider);
|
||||||
i = place(i, &peak2GainLabel, &peak2GainSlider);
|
i = place(i, &peak2GainLabel, &peak2GainSlider);
|
||||||
i = place(i, &peak2QLabel, &peak2QSlider);
|
i = place(i, &peak2QLabel, &peak2QSlider);
|
||||||
i = place(i, nullptr, nullptr, &peak2BypassButton);
|
|
||||||
|
|
||||||
i = place(i, &peak3FreqLabel, &peak3FreqSlider);
|
i = place(i, &peak3FreqLabel, &peak3FreqSlider);
|
||||||
i = place(i, &peak3GainLabel, &peak3GainSlider);
|
i = place(i, &peak3GainLabel, &peak3GainSlider);
|
||||||
i = place(i, &peak3QLabel, &peak3QSlider);
|
i = place(i, &peak3QLabel, &peak3QSlider);
|
||||||
i = place(i, nullptr, nullptr, &peak3BypassButton);
|
|
||||||
|
|
||||||
i = place(i, nullptr, nullptr, nullptr, &highBandModeBox);
|
|
||||||
i = place(i, &highBandFreqLabel, &highBandFreqSlider);
|
i = place(i, &highBandFreqLabel, &highBandFreqSlider);
|
||||||
i = place(i, &highBandSlopeLabel,&highBandSlopeSlider);
|
i = place(i, &highBandSlopeLabel,&highBandSlopeSlider);
|
||||||
i = place(i, &highBandGainLabel, &highBandGainSlider);
|
i = place(i, &highBandGainLabel, &highBandGainSlider);
|
||||||
@ -684,48 +612,34 @@ void CrystalizerEQAudioProcessorEditor::resized()
|
|||||||
i = place(i, &inputLabel, &inputSlider);
|
i = place(i, &inputLabel, &inputSlider);
|
||||||
i = place(i, &outputLabel, &outputSlider);
|
i = place(i, &outputLabel, &outputSlider);
|
||||||
|
|
||||||
i = place(i, nullptr, nullptr, nullptr, &presetBox);
|
//TODO: PLACE ALL BUTTONS AND BUILD FUNCTIONS FOR THEIR DESIGN
|
||||||
i = place(i, nullptr, nullptr, nullptr, nullptr, &presetNameInput);
|
i = place(i, nullptr, nullptr, &peak1BypassButton);
|
||||||
|
i = place(i, nullptr, nullptr, &peak2BypassButton);
|
||||||
|
i = place(i, nullptr, nullptr, &peak3BypassButton);
|
||||||
|
|
||||||
// Untere Leiste: Buttons/Combos ordentlich platzieren
|
|
||||||
auto leftBar = bottom.removeFromLeft(bottom.getWidth()/2);
|
|
||||||
auto rightBar = bottom;
|
|
||||||
|
|
||||||
|
|
||||||
testNoiseButton.setBounds(leftBar.removeFromLeft(160).reduced(8, 8));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
crystalizeButton.setColour (juce::ToggleButton::textColourId, juce::Colours::black);
|
|
||||||
crystalizeButton.setColour(juce::ToggleButton::tickColourId, juce::Colours::black);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
resetButton.setBounds(leftBar.removeFromLeft(200).reduced(8, 8));
|
resetButton.setBounds(leftBar.removeFromLeft(200).reduced(8, 8));
|
||||||
|
|
||||||
const int n = 4; // z.B. 4 Buttons rechts
|
|
||||||
int btnW = rightBar.getWidth() / n;
|
|
||||||
|
|
||||||
crystalizeButton .setBounds(rightBar.removeFromLeft(btnW).reduced(8, 8));
|
crystalizeButton .setBounds(rightBar.removeFromLeft(btnW).reduced(8, 8));
|
||||||
masterBypassButton .setBounds(rightBar.removeFromLeft(btnW).reduced(8, 8));
|
masterBypassButton .setBounds(rightBar.removeFromLeft(btnW).reduced(8, 8));
|
||||||
savePresetButton .setBounds(rightBar.removeFromLeft(btnW).reduced(8, 8));
|
savePresetButton .setBounds(rightBar.removeFromLeft(btnW).reduced(8, 8));
|
||||||
deletePresetButton .setBounds(rightBar.removeFromLeft(btnW).reduced(8, 8));
|
deletePresetButton .setBounds(rightBar.removeFromLeft(btnW).reduced(8, 8));
|
||||||
|
|
||||||
// Wenn du den PresetMenu-Button auch rechts willst, erhöhe n und füge ihn hinzu,
|
|
||||||
// oder pack ihn auf die linke Seite:
|
|
||||||
presetMenuButton.setBounds(leftBar.removeFromLeft(180).reduced(8, 8));
|
presetMenuButton.setBounds(leftBar.removeFromLeft(180).reduced(8, 8));
|
||||||
|
|
||||||
|
//TODO: PLACE ALLS COMBOBOXES AND BUILD FUNCTIONS FOR THEIR DESIGN
|
||||||
|
i = place(i, nullptr, nullptr, nullptr, &lowBandModeBox);
|
||||||
|
i = place(i, nullptr, nullptr, nullptr, &highBandModeBox);
|
||||||
|
i = place(i, nullptr, nullptr, nullptr, &presetBox);
|
||||||
|
|
||||||
|
|
||||||
|
i = place(i, nullptr, nullptr, nullptr, nullptr, &presetNameInput);*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
masterBypassButton.setColour (juce::ToggleButton::textColourId, juce::Colours::black);
|
|
||||||
masterBypassButton.setColour(juce::ToggleButton::tickColourId, juce::Colours::black);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void SpectrumAnalyzer::processSamples() {
|
void SpectrumAnalyzer::processSamples() {
|
||||||
auto samples = audioFIFO.sendSamplesToEditor();
|
auto samples = audioFIFO.sendSamplesToEditor();
|
||||||
|
|
||||||
@ -781,7 +695,6 @@ void SpectrumAnalyzer::fillFftDataFromFrame(std::vector<float> &windowedFrame) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SpectrumAnalyzer::buildMagnitudeSpectrum() {
|
void SpectrumAnalyzer::buildMagnitudeSpectrum() {
|
||||||
for (int k = 0; k < BINS; ++k) {
|
for (int k = 0; k < BINS; ++k) {
|
||||||
float re = 0.f;
|
float re = 0.f;
|
||||||
@ -799,9 +712,6 @@ void SpectrumAnalyzer::buildMagnitudeSpectrum() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void SpectrumAnalyzer::convertToDb() {
|
void SpectrumAnalyzer::convertToDb() {
|
||||||
for (int k = 0; k < magnitudes.size(); ++k) {
|
for (int k = 0; k < magnitudes.size(); ++k) {
|
||||||
float mag = magnitudes[k];
|
float mag = magnitudes[k];
|
||||||
@ -854,7 +764,6 @@ void SpectrumAnalyzer::applyFreqSmoothing() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SpectrumAnalyzer::applyPeakHoldAndFalloff() {
|
void SpectrumAnalyzer::applyPeakHoldAndFalloff() {
|
||||||
std::vector<float> prevPeak = peakHoldMagnitudesDb;
|
std::vector<float> prevPeak = peakHoldMagnitudesDb;
|
||||||
for (int k = 0; k < BINS; ++k) {
|
for (int k = 0; k < BINS; ++k) {
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
#include <juce_audio_processors/juce_audio_processors.h>
|
#include <juce_audio_processors/juce_audio_processors.h>
|
||||||
#include <juce_audio_utils/juce_audio_utils.h>
|
#include <juce_audio_utils/juce_audio_utils.h>
|
||||||
#include "PluginProcessor.h"
|
#include "PluginProcessor.h"
|
||||||
|
#include "AXIOMDesignSystem.h"
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
/**
|
/**
|
||||||
@ -133,6 +134,7 @@ public:
|
|||||||
void paint (juce::Graphics&) override;
|
void paint (juce::Graphics&) override;
|
||||||
void resized() override;
|
void resized() override;
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
// This reference is provided as a quick way for your editor to
|
// This reference is provided as a quick way for your editor to
|
||||||
@ -189,5 +191,8 @@ private:
|
|||||||
|
|
||||||
juce::Rectangle<int> analyzerArea;
|
juce::Rectangle<int> analyzerArea;
|
||||||
|
|
||||||
|
AXIOM::DesignSystem designSystem;
|
||||||
|
|
||||||
|
|
||||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CrystalizerEQAudioProcessorEditor)
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CrystalizerEQAudioProcessorEditor)
|
||||||
};
|
};
|
||||||
|
|||||||
Binary file not shown.
@ -33,3 +33,50 @@
|
|||||||
493 795 7828210854316185 CMakeFiles/CrystalizerEQ_rc_lib.dir/CrystalizerEQ_artefacts/JuceLibraryCode/CrystalizerEQ_resources.rc.res 6234bb35ee153fd0
|
493 795 7828210854316185 CMakeFiles/CrystalizerEQ_rc_lib.dir/CrystalizerEQ_artefacts/JuceLibraryCode/CrystalizerEQ_resources.rc.res 6234bb35ee153fd0
|
||||||
458 5782 7828210853953251 CMakeFiles/CrystalizerEQ_Standalone.dir/JUCE/modules/juce_audio_plugin_client/juce_audio_plugin_client_Standalone.cpp.obj 87ce7c25ac4a4f5a
|
458 5782 7828210853953251 CMakeFiles/CrystalizerEQ_Standalone.dir/JUCE/modules/juce_audio_plugin_client/juce_audio_plugin_client_Standalone.cpp.obj 87ce7c25ac4a4f5a
|
||||||
5782 8147 7828210907196695 CrystalizerEQ_artefacts/Debug/Standalone/CrystalizerEQ.exe f99e08f773a02d9e
|
5782 8147 7828210907196695 CrystalizerEQ_artefacts/Debug/Standalone/CrystalizerEQ.exe f99e08f773a02d9e
|
||||||
|
12 261 7828270633514488 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
276 6153 7828270636154163 CMakeFiles/CrystalizerEQ.dir/PluginEditor.cpp.obj 44b08ed233e258e6
|
||||||
|
6154 7094 7828270694929178 CrystalizerEQ_artefacts/Debug/CrystalizerEQ_SharedCode.lib 7d510101501b6087
|
||||||
|
7 240 7828270705253458 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
255 1330 7828270707734562 CrystalizerEQ_artefacts/Debug/Standalone/CrystalizerEQ.exe f99e08f773a02d9e
|
||||||
|
33 468 7828328469384088 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
13 555 7828328488728907 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
30 317 7828478846812222 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
340 7215 7828478849923234 CMakeFiles/CrystalizerEQ.dir/PluginEditor.cpp.obj 44b08ed233e258e6
|
||||||
|
332 7218 7828478849833210 CMakeFiles/CrystalizerEQ.dir/PluginProcessor.cpp.obj f49ea9ae57418054
|
||||||
|
7218 8285 7828478918711130 CrystalizerEQ_artefacts/Debug/CrystalizerEQ_SharedCode.lib 7d510101501b6087
|
||||||
|
8 291 7828478931100809 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
310 1322 7828478934117703 CrystalizerEQ_artefacts/Debug/Standalone/CrystalizerEQ.exe f99e08f773a02d9e
|
||||||
|
10 258 7828483101927132 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
277 5353 7828483104591268 CMakeFiles/CrystalizerEQ.dir/PluginEditor.cpp.obj 44b08ed233e258e6
|
||||||
|
272 5507 7828483104546368 CMakeFiles/CrystalizerEQ.dir/PluginProcessor.cpp.obj f49ea9ae57418054
|
||||||
|
5507 15570 7828483156906563 CrystalizerEQ_artefacts/Debug/CrystalizerEQ_SharedCode.lib 7d510101501b6087
|
||||||
|
7 246 7828483258354020 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
261 1428 7828483260893121 CrystalizerEQ_artefacts/Debug/Standalone/CrystalizerEQ.exe f99e08f773a02d9e
|
||||||
|
7 249 7828486584619723 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
265 5863 7828486587192370 CMakeFiles/CrystalizerEQ.dir/PluginEditor.cpp.obj 44b08ed233e258e6
|
||||||
|
261 6093 7828486587157366 CMakeFiles/CrystalizerEQ.dir/PluginProcessor.cpp.obj f49ea9ae57418054
|
||||||
|
6094 6785 7828486645493028 CrystalizerEQ_artefacts/Debug/CrystalizerEQ_SharedCode.lib 7d510101501b6087
|
||||||
|
8 267 7828486653294392 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
285 1544 7828486656065586 CrystalizerEQ_artefacts/Debug/Standalone/CrystalizerEQ.exe f99e08f773a02d9e
|
||||||
|
8 264 7828488323419700 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
279 5412 7828488326136219 CMakeFiles/CrystalizerEQ.dir/PluginEditor.cpp.obj 44b08ed233e258e6
|
||||||
|
5412 6001 7828488377471632 CrystalizerEQ_artefacts/Debug/CrystalizerEQ_SharedCode.lib 7d510101501b6087
|
||||||
|
8 248 7828488384101778 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
264 727 7828488386671806 CrystalizerEQ_artefacts/Debug/Standalone/CrystalizerEQ.exe f99e08f773a02d9e
|
||||||
|
9 243 7828505339445689 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
255 5526 7828505341907037 CMakeFiles/CrystalizerEQ.dir/PluginEditor.cpp.obj 44b08ed233e258e6
|
||||||
|
5526 6131 7828505394617765 CrystalizerEQ_artefacts/Debug/CrystalizerEQ_SharedCode.lib 7d510101501b6087
|
||||||
|
10 259 7828505401526723 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
276 741 7828505404187183 CrystalizerEQ_artefacts/Debug/Standalone/CrystalizerEQ.exe f99e08f773a02d9e
|
||||||
|
7 243 7828506110218905 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
259 5390 7828506112742867 CMakeFiles/CrystalizerEQ.dir/PluginEditor.cpp.obj 44b08ed233e258e6
|
||||||
|
255 5612 7828506112707188 CMakeFiles/CrystalizerEQ.dir/PluginProcessor.cpp.obj f49ea9ae57418054
|
||||||
|
5612 6241 7828506166279964 CrystalizerEQ_artefacts/Debug/CrystalizerEQ_SharedCode.lib 7d510101501b6087
|
||||||
|
7 248 7828506173323734 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
264 750 7828506175890819 CrystalizerEQ_artefacts/Debug/Standalone/CrystalizerEQ.exe f99e08f773a02d9e
|
||||||
|
8 245 7828506683311595 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
261 5417 7828506685845317 CMakeFiles/CrystalizerEQ.dir/PluginEditor.cpp.obj 44b08ed233e258e6
|
||||||
|
257 5619 7828506685809976 CMakeFiles/CrystalizerEQ.dir/PluginProcessor.cpp.obj f49ea9ae57418054
|
||||||
|
5619 6265 7828506739433024 CrystalizerEQ_artefacts/Debug/CrystalizerEQ_SharedCode.lib 7d510101501b6087
|
||||||
|
8 249 7828506746645090 C:/Users/deppe/Desktop/Projects/main_crystalizereq/CrystalizerEQ/cmake-build-debug-visual-studio/CMakeFiles/cmake.verify_globs 154243cd2d50ef70
|
||||||
|
265 776 7828506749215292 CrystalizerEQ_artefacts/Debug/Standalone/CrystalizerEQ.exe f99e08f773a02d9e
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,3 +1,3 @@
|
|||||||
Start testing: Oct 22 10:57 Mitteleuropäische Sommerzeit
|
Start testing: Oct 22 17:37 Mitteleuropäische Sommerzeit
|
||||||
----------------------------------------------------------
|
----------------------------------------------------------
|
||||||
End testing: Oct 22 10:57 Mitteleuropäische Sommerzeit
|
End testing: Oct 22 17:37 Mitteleuropäische Sommerzeit
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user