|
- /*
- ==============================================================================
-
- This file is part of the JUCE library.
- Copyright (c) 2017 - ROLI Ltd.
-
- JUCE is an open source library subject to commercial or open-source
- licensing.
-
- By using JUCE, you agree to the terms of both the JUCE 5 End-User License
- Agreement and JUCE 5 Privacy Policy (both updated and effective as of the
- 27th April 2017).
-
- End User License Agreement: www.juce.com/juce-5-licence
- Privacy Policy: www.juce.com/juce-5-privacy-policy
-
- Or: You may also use this code under the terms of the GPL v3 (see
- www.gnu.org/licenses).
-
- JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
- EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
- DISCLAIMED.
-
- ==============================================================================
- */
-
- #include "PluginProcessor.h"
- #include "PluginEditor.h"
-
-
- //==============================================================================
- DspModulePluginDemoAudioProcessorEditor::DspModulePluginDemoAudioProcessorEditor (DspModulePluginDemoAudioProcessor& p)
- : AudioProcessorEditor (&p), processor (p),
- inputVolumeLabel ({ }, processor.inputVolumeParam->name),
- outputVolumeLabel ({ }, processor.outputVolumeParam->name),
- lowPassFilterFreqLabel ({ }, processor.lowPassFilterFreqParam->name),
- highPassFilterFreqLabel ({ }, processor.highPassFilterFreqParam->name),
- stereoLabel({}, processor.stereoParam->name),
- slopeLabel ({ }, processor.slopeParam->name),
- waveshaperLabel({ }, processor.waveshaperParam->name),
- cabinetTypeLabel({ }, processor.cabinetTypeParam->name)
- {
- //==============================================================================
- addAndMakeVisible (inputVolumeSlider = new ParameterSlider (*processor.inputVolumeParam));
- addAndMakeVisible (outputVolumeSlider = new ParameterSlider (*processor.outputVolumeParam));
- addAndMakeVisible (lowPassFilterFreqSlider = new ParameterSlider (*processor.lowPassFilterFreqParam));
- addAndMakeVisible (highPassFilterFreqSlider = new ParameterSlider (*processor.highPassFilterFreqParam));
-
- addAndMakeVisible (inputVolumeLabel);
- inputVolumeLabel.setJustificationType (Justification::centredLeft);
- inputVolumeLabel.attachToComponent (inputVolumeSlider, true);
-
- addAndMakeVisible (outputVolumeLabel);
- outputVolumeLabel.setJustificationType (Justification::centredLeft);
- outputVolumeLabel.attachToComponent (outputVolumeSlider, true);
-
- addAndMakeVisible (lowPassFilterFreqLabel);
- lowPassFilterFreqLabel.setJustificationType (Justification::centredLeft);
- lowPassFilterFreqLabel.attachToComponent (lowPassFilterFreqSlider, true);
-
- addAndMakeVisible (highPassFilterFreqLabel);
- highPassFilterFreqLabel.setJustificationType (Justification::centredLeft);
- highPassFilterFreqLabel.attachToComponent (highPassFilterFreqSlider, true);
-
- //==============================================================================
- addAndMakeVisible (stereoBox);
-
- auto i = 1;
- for (auto choice : processor.stereoParam->choices)
- stereoBox.addItem (choice, i++);
-
- stereoBox.addListener (this);
- stereoBox.setSelectedId (processor.stereoParam->getIndex() + 1);
-
- addAndMakeVisible (stereoLabel);
- stereoLabel.setJustificationType (Justification::centredLeft);
- stereoLabel.attachToComponent (&stereoBox, true);
-
- //==============================================================================
- addAndMakeVisible(slopeBox);
-
- i = 1;
- for (auto choice : processor.slopeParam->choices)
- slopeBox.addItem(choice, i++);
-
- slopeBox.addListener(this);
- slopeBox.setSelectedId(processor.slopeParam->getIndex() + 1);
-
- addAndMakeVisible(slopeLabel);
- slopeLabel.setJustificationType(Justification::centredLeft);
- slopeLabel.attachToComponent(&slopeBox, true);
-
- //==============================================================================
- addAndMakeVisible (waveshaperBox);
-
- i = 1;
- for (auto choice : processor.waveshaperParam->choices)
- waveshaperBox.addItem (choice, i++);
-
- waveshaperBox.addListener (this);
- waveshaperBox.setSelectedId (processor.waveshaperParam->getIndex() + 1);
-
- addAndMakeVisible (waveshaperLabel);
- waveshaperLabel.setJustificationType (Justification::centredLeft);
- waveshaperLabel.attachToComponent (&waveshaperBox, true);
-
- //==============================================================================
- addAndMakeVisible (cabinetTypeBox);
-
- i = 1;
- for (auto choice : processor.cabinetTypeParam->choices)
- cabinetTypeBox.addItem (choice, i++);
-
- cabinetTypeBox.addListener (this);
- cabinetTypeBox.setSelectedId (processor.cabinetTypeParam->getIndex() + 1);
-
- addAndMakeVisible (cabinetTypeLabel);
- cabinetTypeLabel.setJustificationType (Justification::centredLeft);
- cabinetTypeLabel.attachToComponent (&cabinetTypeBox, true);
-
- //==============================================================================
- addAndMakeVisible (cabinetSimButton);
- cabinetSimButton.addListener (this);
- cabinetSimButton.setButtonText (processor.cabinetSimParam->name);
-
- //==============================================================================
- setSize (600, 400);
- }
-
- DspModulePluginDemoAudioProcessorEditor::~DspModulePluginDemoAudioProcessorEditor()
- {
- }
-
- //==============================================================================
- void DspModulePluginDemoAudioProcessorEditor::paint (Graphics& g)
- {
- g.setColour (getLookAndFeel().findColour (ResizableWindow::backgroundColourId));
- g.fillAll();
- }
-
- void DspModulePluginDemoAudioProcessorEditor::resized()
- {
- auto bounds = getLocalBounds().reduced (10);
- bounds.removeFromTop (10);
- bounds.removeFromLeft (125);
-
- //==============================================================================
- inputVolumeSlider->setBounds (bounds.removeFromTop (30));
- bounds.removeFromTop (5);
-
- outputVolumeSlider->setBounds (bounds.removeFromTop (30));
- bounds.removeFromTop (15);
-
- highPassFilterFreqSlider->setBounds (bounds.removeFromTop (30));
- bounds.removeFromTop (5);
-
- lowPassFilterFreqSlider->setBounds (bounds.removeFromTop (30));
- bounds.removeFromTop (15);
-
- //==============================================================================
- stereoBox.setBounds (bounds.removeFromTop(30));
- bounds.removeFromTop (5);
-
- slopeBox.setBounds (bounds.removeFromTop (30));
- bounds.removeFromTop (5);
-
- waveshaperBox.setBounds (bounds.removeFromTop (30));
- bounds.removeFromTop (5);
-
- cabinetTypeBox.setBounds (bounds.removeFromTop (30));
- bounds.removeFromTop (15);
-
- //==============================================================================
- auto buttonSlice = bounds.removeFromTop (30);
- cabinetSimButton.setSize (200, bounds.getHeight());
- cabinetSimButton.setCentrePosition (buttonSlice.getCentre());
- bounds.removeFromTop (15);
- }
- //==============================================================================
- void DspModulePluginDemoAudioProcessorEditor::comboBoxChanged (ComboBox* box)
- {
- auto index = box->getSelectedItemIndex();
-
- if (box == &stereoBox)
- {
- processor.stereoParam->operator= (index);
- }
- else if (box == &slopeBox)
- {
- processor.slopeParam->operator= (index);
- }
- else if (box == &waveshaperBox)
- {
- processor.waveshaperParam->operator= (index);
- }
- else if (box == &cabinetTypeBox)
- {
- processor.cabinetTypeParam->operator= (index);
- }
- }
|