2024-08-10 19:26:56 +00:00
|
|
|
#include "VisualiserSettings.h"
|
2024-08-13 13:55:30 +00:00
|
|
|
#include "VisualiserComponent.h"
|
2024-08-10 19:26:56 +00:00
|
|
|
#include "../PluginEditor.h"
|
|
|
|
|
2024-08-23 10:06:50 +00:00
|
|
|
|
2024-12-26 23:00:52 +00:00
|
|
|
VisualiserSettings::VisualiserSettings(VisualiserParameters& p, int numChannels) : parameters(p), numChannels(numChannels) {
|
2024-08-23 10:06:50 +00:00
|
|
|
addAndMakeVisible(intensity);
|
2024-08-10 19:26:56 +00:00
|
|
|
addAndMakeVisible(persistence);
|
|
|
|
addAndMakeVisible(hue);
|
2025-01-05 22:54:02 +00:00
|
|
|
addAndMakeVisible(lineSaturation);
|
2024-09-29 19:36:16 +00:00
|
|
|
addAndMakeVisible(focus);
|
2024-11-09 21:37:20 +00:00
|
|
|
addAndMakeVisible(noise);
|
|
|
|
addAndMakeVisible(glow);
|
2024-12-26 23:00:52 +00:00
|
|
|
addAndMakeVisible(ambient);
|
2024-11-09 22:51:42 +00:00
|
|
|
addAndMakeVisible(smooth);
|
2025-01-03 16:37:36 +00:00
|
|
|
addAndMakeVisible(sweepMs);
|
|
|
|
addAndMakeVisible(triggerValue);
|
2024-08-14 19:27:56 +00:00
|
|
|
addAndMakeVisible(upsamplingToggle);
|
2024-11-17 12:18:30 +00:00
|
|
|
addAndMakeVisible(sweepToggle);
|
2025-01-07 18:28:55 +00:00
|
|
|
addAndMakeVisible(screenOverlayLabel);
|
|
|
|
addAndMakeVisible(screenOverlay);
|
2025-01-10 12:41:34 +00:00
|
|
|
#if SOSCI_FEATURES
|
|
|
|
addAndMakeVisible(screenSaturation);
|
2025-01-10 15:22:55 +00:00
|
|
|
addAndMakeVisible(stereo);
|
2025-01-10 12:41:34 +00:00
|
|
|
addAndMakeVisible(xOffset);
|
|
|
|
addAndMakeVisible(yOffset);
|
|
|
|
addAndMakeVisible(xScale);
|
|
|
|
addAndMakeVisible(yScale);
|
|
|
|
addAndMakeVisible(flipVerticalToggle);
|
|
|
|
addAndMakeVisible(flipHorizontalToggle);
|
|
|
|
#endif
|
2024-12-26 23:00:52 +00:00
|
|
|
|
2025-01-07 18:28:55 +00:00
|
|
|
for (int i = 1; i <= parameters.screenOverlay->max; i++) {
|
|
|
|
screenOverlay.addItem(parameters.screenOverlay->getText(parameters.screenOverlay->getNormalisedValue(i)), i);
|
2024-12-26 23:00:52 +00:00
|
|
|
}
|
2025-01-07 18:28:55 +00:00
|
|
|
screenOverlay.setSelectedId(parameters.screenOverlay->getValueUnnormalised());
|
|
|
|
screenOverlay.onChange = [this] {
|
|
|
|
parameters.screenOverlay->setUnnormalisedValueNotifyingHost(screenOverlay.getSelectedId());
|
2024-12-26 23:00:52 +00:00
|
|
|
};
|
2024-08-13 13:55:30 +00:00
|
|
|
|
|
|
|
intensity.setSliderOnValueChange();
|
|
|
|
persistence.setSliderOnValueChange();
|
|
|
|
hue.setSliderOnValueChange();
|
2025-01-05 22:54:02 +00:00
|
|
|
lineSaturation.setSliderOnValueChange();
|
2024-09-29 19:36:16 +00:00
|
|
|
focus.setSliderOnValueChange();
|
2024-11-09 21:37:20 +00:00
|
|
|
noise.setSliderOnValueChange();
|
|
|
|
glow.setSliderOnValueChange();
|
2024-12-26 23:00:52 +00:00
|
|
|
ambient.setSliderOnValueChange();
|
2024-11-09 22:51:42 +00:00
|
|
|
smooth.setSliderOnValueChange();
|
2024-11-17 12:18:30 +00:00
|
|
|
sweepMs.setSliderOnValueChange();
|
2025-01-03 16:37:36 +00:00
|
|
|
triggerValue.setSliderOnValueChange();
|
|
|
|
|
|
|
|
sweepMs.setEnabled(sweepToggle.getToggleState());
|
|
|
|
triggerValue.setEnabled(sweepToggle.getToggleState());
|
|
|
|
|
|
|
|
sweepMs.slider.setSkewFactorFromMidPoint(100);
|
2024-11-17 12:18:30 +00:00
|
|
|
|
|
|
|
sweepToggle.onClick = [this] {
|
2025-01-03 16:37:36 +00:00
|
|
|
sweepMs.setEnabled(sweepToggle.getToggleState());
|
|
|
|
triggerValue.setEnabled(sweepToggle.getToggleState());
|
2024-11-17 12:18:30 +00:00
|
|
|
resized();
|
|
|
|
};
|
2025-01-08 13:06:01 +00:00
|
|
|
|
2025-01-10 12:41:34 +00:00
|
|
|
#if SOSCI_FEATURES
|
|
|
|
screenSaturation.setSliderOnValueChange();
|
2025-01-10 15:22:55 +00:00
|
|
|
stereo.setSliderOnValueChange();
|
2025-01-10 12:41:34 +00:00
|
|
|
xOffset.setSliderOnValueChange();
|
|
|
|
yOffset.setSliderOnValueChange();
|
|
|
|
xScale.setSliderOnValueChange();
|
|
|
|
yScale.setSliderOnValueChange();
|
|
|
|
#endif
|
|
|
|
|
2025-01-08 13:06:01 +00:00
|
|
|
parameters.screenOverlay->addListener(this);
|
2024-08-10 19:26:56 +00:00
|
|
|
}
|
|
|
|
|
2025-01-08 13:06:01 +00:00
|
|
|
VisualiserSettings::~VisualiserSettings() {
|
|
|
|
parameters.screenOverlay->removeListener(this);
|
|
|
|
}
|
2024-08-10 19:26:56 +00:00
|
|
|
|
2025-01-06 11:17:42 +00:00
|
|
|
void VisualiserSettings::paint(juce::Graphics& g) {
|
|
|
|
g.fillAll(Colours::darker);
|
|
|
|
}
|
|
|
|
|
2024-08-10 19:26:56 +00:00
|
|
|
void VisualiserSettings::resized() {
|
2024-12-26 23:00:52 +00:00
|
|
|
auto area = getLocalBounds().reduced(20, 0).withTrimmedBottom(20);
|
2024-08-10 19:26:56 +00:00
|
|
|
double rowHeight = 30;
|
2024-12-26 23:00:52 +00:00
|
|
|
|
2025-01-07 18:28:55 +00:00
|
|
|
auto screenOverlayArea = area.removeFromTop(2 * rowHeight);
|
|
|
|
screenOverlayArea = screenOverlayArea.withSizeKeepingCentre(300, rowHeight);
|
|
|
|
screenOverlayLabel.setBounds(screenOverlayArea.removeFromLeft(120));
|
|
|
|
screenOverlay.setBounds(screenOverlayArea.removeFromRight(180));
|
2024-12-26 23:00:52 +00:00
|
|
|
|
2024-08-10 19:26:56 +00:00
|
|
|
intensity.setBounds(area.removeFromTop(rowHeight));
|
|
|
|
persistence.setBounds(area.removeFromTop(rowHeight));
|
|
|
|
hue.setBounds(area.removeFromTop(rowHeight));
|
2025-01-05 22:54:02 +00:00
|
|
|
lineSaturation.setBounds(area.removeFromTop(rowHeight));
|
2025-01-10 12:41:34 +00:00
|
|
|
#if SOSCI_FEATURES
|
2025-01-05 22:54:02 +00:00
|
|
|
screenSaturation.setBounds(area.removeFromTop(rowHeight));
|
2025-01-10 12:41:34 +00:00
|
|
|
#endif
|
2024-09-29 19:36:16 +00:00
|
|
|
focus.setBounds(area.removeFromTop(rowHeight));
|
2024-11-09 21:37:20 +00:00
|
|
|
noise.setBounds(area.removeFromTop(rowHeight));
|
|
|
|
glow.setBounds(area.removeFromTop(rowHeight));
|
2024-12-26 23:00:52 +00:00
|
|
|
ambient.setBounds(area.removeFromTop(rowHeight));
|
2024-11-09 22:51:42 +00:00
|
|
|
smooth.setBounds(area.removeFromTop(rowHeight));
|
2024-12-26 23:00:52 +00:00
|
|
|
|
2025-01-10 12:41:34 +00:00
|
|
|
#if SOSCI_FEATURES
|
2025-01-10 15:22:55 +00:00
|
|
|
stereo.setBounds(area.removeFromTop(rowHeight));
|
2025-01-10 12:41:34 +00:00
|
|
|
xScale.setBounds(area.removeFromTop(rowHeight));
|
|
|
|
yScale.setBounds(area.removeFromTop(rowHeight));
|
|
|
|
xOffset.setBounds(area.removeFromTop(rowHeight));
|
|
|
|
yOffset.setBounds(area.removeFromTop(rowHeight));
|
|
|
|
flipVerticalToggle.setBounds(area.removeFromTop(rowHeight));
|
|
|
|
flipHorizontalToggle.setBounds(area.removeFromTop(rowHeight));
|
|
|
|
#endif
|
|
|
|
|
2024-08-14 19:27:56 +00:00
|
|
|
upsamplingToggle.setBounds(area.removeFromTop(rowHeight));
|
2024-11-17 12:18:30 +00:00
|
|
|
sweepToggle.setBounds(area.removeFromTop(rowHeight));
|
2025-01-03 16:37:36 +00:00
|
|
|
sweepMs.setBounds(area.removeFromTop(rowHeight));
|
|
|
|
triggerValue.setBounds(area.removeFromTop(rowHeight));
|
2024-08-10 19:26:56 +00:00
|
|
|
}
|
2025-01-08 13:06:01 +00:00
|
|
|
|
|
|
|
void VisualiserSettings::parameterValueChanged(int parameterIndex, float newValue) {
|
|
|
|
if (parameterIndex == parameters.screenOverlay->getParameterIndex()) {
|
|
|
|
screenOverlay.setSelectedId(parameters.screenOverlay->getValueUnnormalised());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void VisualiserSettings::parameterGestureChanged(int parameterIndex, bool gestureIsStarting) {}
|