-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPluginEditor.cpp
More file actions
114 lines (86 loc) · 4.25 KB
/
PluginEditor.cpp
File metadata and controls
114 lines (86 loc) · 4.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/*
==============================================================================
This file contains the basic framework code for a JUCE plugin editor.
==============================================================================
*/
#include "PluginProcessor.h"
#include "PluginEditor.h"
float getNormalizedAlertLevel(float value, float startThreshold, float endThreshold)
{
return juce::jlimit(0.0f, 1.0f, (value - startThreshold) / (endThreshold - startThreshold));
}
//==============================================================================
GuideLinesCompAudioProcessorEditor::GuideLinesCompAudioProcessorEditor(GuideLinesCompAudioProcessor& p)
: AudioProcessorEditor(&p), audioProcessor(p), presetPanel(p.getPresetManager())
{
setLookAndFeel(&mainLF);
addAndMakeVisible(presetPanel);
addAndMakeVisible(lowCutKnob);
// Compress group
//compressGroup.setText("Compress");
//compressGroup.setTextLabelPosition(juce::Justification::horizontallyCentred);
compressGroup.addAndMakeVisible(compressionKnob);
compressGroup.addAndMakeVisible(inputMeter);
addAndMakeVisible(compressGroup);
// Control group
//controlGroup.setText("Control");
//controlGroup.setTextLabelPosition(juce::Justification::horizontallyCentred);
controlGroup.addAndMakeVisible(controlKnob);
controlGroup.addAndMakeVisible(gRMeter);
addAndMakeVisible(controlGroup);
// Output group
//outputGroup.setText("Output");
//outputGroup.setTextLabelPosition(juce::Justification::horizontallyCentred);
outputGroup.addAndMakeVisible(outputGainKnob);
outputGroup.addAndMakeVisible(outputMeter);
addAndMakeVisible(outputGroup);
setSize(400, 550);
startTimerHz(60);
}
GuideLinesCompAudioProcessorEditor::~GuideLinesCompAudioProcessorEditor()
{
setLookAndFeel(nullptr);
}
//==============================================================================
void GuideLinesCompAudioProcessorEditor::paint(juce::Graphics& g)
{
g.fillAll(Colors::background);
auto rect = getLocalBounds().withHeight(40);
g.setColour(Colors::header);
g.fillRect(rect);
}
void GuideLinesCompAudioProcessorEditor::resized()
{
auto bounds = getLocalBounds();
int headerHeight = 50;
int knobWidth = 57;
int padding = 7;
int y = headerHeight + padding;
int groupWidth = bounds.getWidth() - 3 * padding;
int groupHeight = 105;
int meterWidth = groupWidth - knobWidth - (3 * padding);
int meterHeight = 55;
lowCutKnob.setTopLeftPosition(padding * 2, y + padding);
presetPanel.setBounds(lowCutKnob.getRight() + (padding * 4), lowCutKnob.getY() + (padding * 2), groupWidth - (lowCutKnob.getWidth() + (padding * 4)), groupHeight / 2.5);
compressGroup.setBounds(padding, lowCutKnob.getBottom() + padding, groupWidth, groupHeight);
controlGroup.setBounds(padding, compressGroup.getBottom() + padding, groupWidth, groupHeight);
outputGroup.setBounds(padding, controlGroup.getBottom() + padding, groupWidth, groupHeight);
auto compressArea = compressGroup.getLocalBounds().reduced(padding);
compressionKnob.setTopLeftPosition(compressArea.getX(), compressArea.getY());
inputMeter.setBounds(compressionKnob.getRight() + padding, compressionKnob.getY() + 2 * padding, meterWidth, meterHeight);
auto controlArea = controlGroup.getLocalBounds().reduced(padding);
controlKnob.setTopLeftPosition(controlArea.getX(), controlArea.getY());
gRMeter.setBounds(controlKnob.getRight() + padding, controlKnob.getY() + 2 * padding, meterWidth, meterHeight);
auto outputArea = outputGroup.getLocalBounds().reduced(padding);
outputGainKnob.setTopLeftPosition(outputArea.getX(), outputArea.getY());
outputMeter.setBounds(outputGainKnob.getRight() + padding, outputGainKnob.getY() + 2 * padding, meterWidth, meterHeight);
}
void GuideLinesCompAudioProcessorEditor::timerCallback()
{
auto input = audioProcessor.getPeakInputLevelForKnob();
auto compress = audioProcessor.getCompressionAmountForKnob();
auto output = audioProcessor.getPeakOutputLevelForKnob();
compressionKnob.setAlertLevel(getNormalizedAlertLevel(input, 0.8f, 1.2f));
controlKnob.setAlertLevel(juce::jlimit(0.f, 1.f, compress / 12));
outputGainKnob.setAlertLevel(getNormalizedAlertLevel(output, 0.8f, 1.2f));
}