From 7f4444d5318a9a0cd63fe4e7615155c01c2557b3 Mon Sep 17 00:00:00 2001 From: Alberto Roletto <73691506+sadmemelord@users.noreply.github.com> Date: Wed, 8 Feb 2023 13:44:52 +0100 Subject: [PATCH] working compressor bypass button toggle button using look and fell from viator dsp style sheet --- AudioTracks/drumLoop120BPM.wav.reapeaks | Bin 0 -> 82290 bytes QuasoCompressor.jucer | 4 ++ Source/GUI/Buttons/Buttons.cpp | 8 ++++ Source/GUI/LookAndFeel/ToggleButtonLAF.cpp | 52 +++++++++++++++++++++ Source/GUI/LookAndFeel/ToggleButtonLAF.h | 27 +++++++++++ Source/Parameters/Parameters.cpp | 6 +++ Source/Parameters/Parameters.h | 6 +++ Source/PluginEditor.cpp | 9 ++-- Source/PluginEditor.h | 25 ++++++---- Source/PluginProcessor.cpp | 9 ++++ 10 files changed, 132 insertions(+), 14 deletions(-) create mode 100644 AudioTracks/drumLoop120BPM.wav.reapeaks create mode 100644 Source/GUI/LookAndFeel/ToggleButtonLAF.cpp create mode 100644 Source/GUI/LookAndFeel/ToggleButtonLAF.h diff --git a/AudioTracks/drumLoop120BPM.wav.reapeaks b/AudioTracks/drumLoop120BPM.wav.reapeaks new file mode 100644 index 0000000000000000000000000000000000000000..94db1219342f04919eb8d0c9ba5e28b0561800a1 GIT binary patch literal 82290 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 O+KOA2-vviI(prd{N!7fqUTdIf^~B0Y1@f;s;OR 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 5bd3=}rT4$YmJ#bNZp#927Tcj|b{U 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 + + diff --git a/Source/GUI/Buttons/Buttons.cpp b/Source/GUI/Buttons/Buttons.cpp index 46cd72d..ec0d40a 100644 --- a/Source/GUI/Buttons/Buttons.cpp +++ b/Source/GUI/Buttons/Buttons.cpp @@ -13,4 +13,12 @@ void QuasoCompressorAudioProcessorEditor::setButtonProps(juce::ToggleButton& button) { addAndMakeVisible(button); + button.setLookAndFeel(&buttonLAF); } + + +void QuasoCompressorAudioProcessorEditor::attachButtons() +{ + using ButtonAttachment = juce::AudioProcessorValueTreeState::ButtonAttachment; + compBypassAttach = std::make_unique(audioProcessor.apvts, compBypassID, compBypassButton); +} \ No newline at end of file diff --git a/Source/GUI/LookAndFeel/ToggleButtonLAF.cpp b/Source/GUI/LookAndFeel/ToggleButtonLAF.cpp new file mode 100644 index 0000000..05f0ab8 --- /dev/null +++ b/Source/GUI/LookAndFeel/ToggleButtonLAF.cpp @@ -0,0 +1,52 @@ +/* + ============================================================================== + + ToggleButtonLAF.cpp + Created: 8 Feb 2023 11:21:46am + Author: Utente + + ============================================================================== +*/ + +#include "ToggleButtonLAF.h" + +void PowerToggleLAF::drawToggleButton +( + juce::Graphics& g, + juce::ToggleButton& toggleButton, + bool shouldDrawButtonAsHighlighted, + bool shouldDrawButtonAsDown +) +{ + Path button; + + auto bounds = toggleButton.getLocalBounds(); + + auto size = jmin(bounds.getWidth(), bounds.getHeight()) - 6; + auto r = bounds.withSizeKeepingCentre(size, size).toFloat(); + + float ang = 30.f; + + size -= 9; + + + button.addCentredArc(r.getCentreX(), + r.getCentreY(), + size * 0.25, + size * 0.25, + 0.f, + degreesToRadians(ang), + degreesToRadians(360.f - ang), + true); + + button.startNewSubPath(r.getCentreX(), r.getY() + r.getHeight() * 0.21); + button.lineTo(r.getCentre()); + + PathStrokeType pst(2.5f, PathStrokeType::JointStyle::curved); + + auto color = + toggleButton.getToggleState() ? toggleButton.findColour(juce::ToggleButton::tickDisabledColourId) : toggleButton.findColour(juce::ToggleButton::tickColourId); + + g.setColour(color); + g.strokePath(button, pst); +} diff --git a/Source/GUI/LookAndFeel/ToggleButtonLAF.h b/Source/GUI/LookAndFeel/ToggleButtonLAF.h new file mode 100644 index 0000000..068c16b --- /dev/null +++ b/Source/GUI/LookAndFeel/ToggleButtonLAF.h @@ -0,0 +1,27 @@ +/* + ============================================================================== + + ToggleButtonLAF.h + Created: 8 Feb 2023 11:21:46am + Author: Utente + + ============================================================================== +*/ + +#pragma once +#include + +class PowerToggleLAF : public LookAndFeel_V4 +{ + +public: + + + void drawToggleButton + ( + juce::Graphics& g, + juce::ToggleButton& toggleButton, + bool shouldDrawButtonAsHighlighted, + bool shouldDrawButtonAsDown + ) override; +}; diff --git a/Source/Parameters/Parameters.cpp b/Source/Parameters/Parameters.cpp index 63a7e60..fc5ecde 100644 --- a/Source/Parameters/Parameters.cpp +++ b/Source/Parameters/Parameters.cpp @@ -13,6 +13,9 @@ const juce::String inputID = "input"; const juce::String inputName = "Input"; +const juce::String compBypassID = "compBypass"; +const juce::String compBypassName = "Compressor Bypass"; + const juce::String threshID = "thresh"; const juce::String threshName = "Thresh"; @@ -25,6 +28,9 @@ const juce::String attackName = "Attack"; const juce::String releaseID = "release"; const juce::String releaseName = "Release"; +const juce::String limBypassID = "limBypass"; +const juce::String limBypassName = "Limiter Bypass"; + const juce::String limThreshID = "limThresh"; const juce::String limThreshName = "Limiter Thresh"; diff --git a/Source/Parameters/Parameters.h b/Source/Parameters/Parameters.h index 6ec6304..4019647 100644 --- a/Source/Parameters/Parameters.h +++ b/Source/Parameters/Parameters.h @@ -14,6 +14,9 @@ extern const juce::String inputID; extern const juce::String inputName; +extern const juce::String compBypassID; +extern const juce::String compBypassName; + extern const juce::String threshID; extern const juce::String threshName; @@ -26,6 +29,9 @@ extern const juce::String attackName; extern const juce::String releaseID; extern const juce::String releaseName; +extern const juce::String limBypassID; +extern const juce::String limBypassName; + extern const juce::String limThreshID; extern const juce::String limThreshName; diff --git a/Source/PluginEditor.cpp b/Source/PluginEditor.cpp index e5b3c32..aa61220 100644 --- a/Source/PluginEditor.cpp +++ b/Source/PluginEditor.cpp @@ -59,6 +59,7 @@ QuasoCompressorAudioProcessorEditor::QuasoCompressorAudioProcessorEditor (QuasoC attachSliders(); + attachButtons(); setSize(1000, 500); @@ -124,9 +125,9 @@ void QuasoCompressorAudioProcessorEditor::resized() // //flexboxRowTwo.items = itemArrayRowTwo; //flexboxRowTwo.performLayout(getLocalBounds().withY(getHeight() * 0.5).withHeight(getHeight()*0.5)); - inputDial.setBounds(leftMargin, 50, dialSize, dialSize); - threshDial.setBounds(mainLeftMargin, 50, dialSize, dialSize); - ratioDial.setBounds(threshDial.getX() + threshDial.getWidth(), 50, dialSize, dialSize); + inputDial.setBounds(leftMargin, 65, dialSize, dialSize); + threshDial.setBounds(mainLeftMargin, 65, dialSize, dialSize); + ratioDial.setBounds(threshDial.getX() + threshDial.getWidth(), 65, dialSize, dialSize); ioGroup.setBounds(inputDial.getX(), inputDial.getY() * 0.1, inputDial.getWidth(), inputDial.getY() + inputDial.getHeight() * 2.4); @@ -144,7 +145,7 @@ void QuasoCompressorAudioProcessorEditor::resized() limiterGroup.setBounds(limThreshDial.getX(), limThreshDial.getY() * 0.1, limThreshDial.getWidth(), limThreshDial.getY() + limThreshDial.getHeight() * 2.4); - compBypassButton.setBounds(ratioDial.getX() , getLocalBounds().getY() / 2, 100, 100); + compBypassButton.setBounds(compressorGroup.getRight() - 46, compressorGroup.getBottom() - 46, 50, 50); diff --git a/Source/PluginEditor.h b/Source/PluginEditor.h index 2d51fb0..e3239d3 100644 --- a/Source/PluginEditor.h +++ b/Source/PluginEditor.h @@ -11,6 +11,7 @@ #include #include "PluginProcessor.h" #include "GUI/LookAndFeel/DialLAF.h" +#include "GUI/LookAndFeel/ToggleButtonLAF.h" //============================================================================== /** @@ -42,6 +43,7 @@ class QuasoCompressorAudioProcessorEditor : public juce::AudioProcessorEditor //using custom look and feel DialStyle customDialLAF; + PowerToggleLAF buttonLAF; //shadows juce::DropShadow shadowProperties; @@ -115,19 +117,22 @@ class QuasoCompressorAudioProcessorEditor : public juce::AudioProcessorEditor void setButtonProps(juce::ToggleButton& button); //setting up attachment - using Attachment = std::unique_ptr; - - Attachment inputAttach; - Attachment threshAttach; - Attachment ratioAttach; - Attachment attackAttach; - Attachment releaseAttach; - Attachment limThreshAttach; - Attachment limReleaseAttach; - Attachment outputAttach; + using ButtonAttachment = std::unique_ptr; + ButtonAttachment compBypassAttach; + + using SliderAttachment = std::unique_ptr; + SliderAttachment inputAttach; + SliderAttachment threshAttach; + SliderAttachment ratioAttach; + SliderAttachment attackAttach; + SliderAttachment releaseAttach; + SliderAttachment limThreshAttach; + SliderAttachment limReleaseAttach; + SliderAttachment outputAttach; //method to attach sliders to the apvts void attachSliders(); + void attachButtons(); diff --git a/Source/PluginProcessor.cpp b/Source/PluginProcessor.cpp index 36928eb..958acb8 100644 --- a/Source/PluginProcessor.cpp +++ b/Source/PluginProcessor.cpp @@ -28,10 +28,12 @@ QuasoCompressorAudioProcessor::QuasoCompressorAudioProcessor() //every paramaters needs a listener inside the constructor of the main AudioProcessor class //everything the listener receives a changes from its parameter ID the parameterChanged method is called apvts.addParameterListener(inputID, this); + apvts.addParameterListener(compBypassID, this); apvts.addParameterListener(threshID, this); apvts.addParameterListener(ratioID, this); apvts.addParameterListener(attackID, this); apvts.addParameterListener(releaseID, this); + //apvts.addParameterListener(limBypassID, this); apvts.addParameterListener(limThreshID, this); apvts.addParameterListener(limReleaseID, this); apvts.addParameterListener(outputID, this); @@ -41,10 +43,12 @@ QuasoCompressorAudioProcessor::~QuasoCompressorAudioProcessor() { //the listener for each parameter has to be removed in the destructor apvts.removeParameterListener(inputID, this); + apvts.removeParameterListener(compBypassID, this); apvts.removeParameterListener(threshID, this); apvts.removeParameterListener(ratioID, this); apvts.removeParameterListener(attackID, this); apvts.removeParameterListener(releaseID, this); + //apvts.removeParameterListener(limBypassID, this); apvts.removeParameterListener(limThreshID, this); apvts.removeParameterListener(limReleaseID, this); apvts.removeParameterListener(outputID, this); @@ -69,20 +73,24 @@ juce::AudioProcessorValueTreeState::ParameterLayout QuasoCompressorAudioProcesso //parameters are created auto pInput = std::make_unique(inputID, inputName, -60.0f, 24.0f, 0.0f); + auto pBypass = std::make_unique(compBypassID, compBypassName, false); auto pThresh = std::make_unique(threshID, threshName, -60.0f, 12.0f, 0.0f); auto pRatio = std::make_unique(ratioID, ratioName, 1.0f, 20.0f, 1.0f); auto pAttack = std::make_unique(attackID, attackName, attackRange, 50.0f); auto pRelease = std::make_unique(releaseID, releaseName, releaseRange, 160.0f); + //auto pLimBypass = std::make_unique(limBypassID, limBypassName, false); auto pLimThresh = std::make_unique(limThreshID, limThreshName, -60.0f, 0.0f, 160.0f); auto pLimRelease = std::make_unique(limReleaseID, limReleaseName, limReleaseRange, 250.0f); auto pOutput = std::make_unique(outputID, outputName, -60.0f, 24.0f, 0.0f); //different type of parameters like floats or selection are pushed into the params vector params.push_back(std::move(pInput)); + params.push_back(std::move(pBypass)); params.push_back(std::move(pThresh)); params.push_back(std::move(pRatio)); params.push_back(std::move(pAttack)); params.push_back(std::move(pRelease)); + //params.push_back(std::move(pLimBypass)); params.push_back(std::move(pLimThresh)); params.push_back(std::move(pLimRelease)); params.push_back(std::move(pOutput)); @@ -102,6 +110,7 @@ void QuasoCompressorAudioProcessor::updateParameters() { //the load method is needed because the raw parameters are atomic inputModule.setGainDecibels(apvts.getRawParameterValue(inputID)->load()); + customCompressorModule.setBypass(apvts.getRawParameterValue(compBypassID)->load()); customCompressorModule.setThreshold(apvts.getRawParameterValue(threshID)->load()); customCompressorModule.setRatio(apvts.getRawParameterValue(ratioID)->load()); customCompressorModule.setAttack(apvts.getRawParameterValue(attackID)->load());