From 6d54231b24bdd1c2acc7ea678a0d6f0ede03eb4f Mon Sep 17 00:00:00 2001 From: bruce Date: Sun, 3 Nov 2013 00:14:00 +0800 Subject: [PATCH] Add UI controls for vibrato and tremolo depth, modulator feedback. Improve build instructions. --- Source/PluginGui.cpp | 381 +++++++++++++++++++++++++++++++------------ Source/PluginGui.h | 9 + readme.md | 14 +- 3 files changed, 296 insertions(+), 108 deletions(-) diff --git a/Source/PluginGui.cpp b/Source/PluginGui.cpp index e3a3846..30455f7 100644 --- a/Source/PluginGui.cpp +++ b/Source/PluginGui.cpp @@ -75,6 +75,11 @@ void PluginGui::updateFromParameters() if (processor->getEnumParameter("Carrier Vibrato")) vibratoButton2->setToggleState(true, false); if (processor->getEnumParameter("Carrier Sustain")) sustainButton2->setToggleState(true, false); if (processor->getEnumParameter("Carrier Keyscale Rate")) keyscaleEnvButton2->setToggleState(true, false); + + vibratoSlider->setValue(processor->getEnumParameter("Vibrato Depth") * 7.0 + 7.0, NotificationType::dontSendNotification); + tremoloSlider->setValue(processor->getEnumParameter("Tremolo Depth") * 3.8 + 1.0, NotificationType::dontSendNotification); + feedbackSlider->setValue(processor->getIntParameter("Modulator Feedback"), NotificationType::dontSendNotification); + } //[/MiscUserDefs] @@ -98,7 +103,7 @@ PluginGui::PluginGui (JuceOplvstiAudioProcessor* ownerFilter) addAndMakeVisible (frequencyLabel = new Label ("frequency label", "Frequency")); frequencyLabel->setFont (Font (15.00f, Font::plain)); - frequencyLabel->setJustificationType (Justification::centred); + frequencyLabel->setJustificationType (Justification::centredLeft); frequencyLabel->setEditable (false, false, false); frequencyLabel->setColour (Label::textColourId, Colour (0xff007f00)); frequencyLabel->setColour (TextEditor::textColourId, Colours::black); @@ -257,7 +262,7 @@ PluginGui::PluginGui (JuceOplvstiAudioProcessor* ownerFilter) addAndMakeVisible (waveLabel = new Label ("wave label", "Wave")); waveLabel->setFont (Font (15.00f, Font::plain)); - waveLabel->setJustificationType (Justification::centred); + waveLabel->setJustificationType (Justification::centredLeft); waveLabel->setEditable (false, false, false); waveLabel->setColour (Label::textColourId, Colour (0xff007f00)); waveLabel->setColour (TextEditor::textColourId, Colours::black); @@ -329,7 +334,7 @@ PluginGui::PluginGui (JuceOplvstiAudioProcessor* ownerFilter) addAndMakeVisible (frequencyLabel3 = new Label ("frequency label", "Frequency")); frequencyLabel3->setFont (Font (15.00f, Font::plain)); - frequencyLabel3->setJustificationType (Justification::centred); + frequencyLabel3->setJustificationType (Justification::centredLeft); frequencyLabel3->setEditable (false, false, false); frequencyLabel3->setColour (Label::textColourId, Colour (0xff007f00)); frequencyLabel3->setColour (TextEditor::textColourId, Colours::black); @@ -488,7 +493,7 @@ PluginGui::PluginGui (JuceOplvstiAudioProcessor* ownerFilter) addAndMakeVisible (waveLabel2 = new Label ("wave label", "Wave")); waveLabel2->setFont (Font (15.00f, Font::plain)); - waveLabel2->setJustificationType (Justification::centred); + waveLabel2->setJustificationType (Justification::centredLeft); waveLabel2->setEditable (false, false, false); waveLabel2->setColour (Label::textColourId, Colour (0xff007f00)); waveLabel2->setColour (TextEditor::textColourId, Colours::black); @@ -544,6 +549,92 @@ PluginGui::PluginGui (JuceOplvstiAudioProcessor* ownerFilter) dbLabel4->setColour (TextEditor::textColourId, Colours::black); dbLabel4->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + addAndMakeVisible (groupComponent3 = new GroupComponent ("new group", + "Common")); + groupComponent3->setTextLabelPosition (Justification::centredLeft); + groupComponent3->setColour (GroupComponent::outlineColourId, Colour (0xff007f00)); + groupComponent3->setColour (GroupComponent::textColourId, Colour (0xff007f00)); + + addAndMakeVisible (tremoloSlider = new Slider ("tremolo slider")); + tremoloSlider->setRange (1, 4.8, 3.8); + tremoloSlider->setSliderStyle (Slider::LinearHorizontal); + tremoloSlider->setTextBoxStyle (Slider::TextBoxLeft, false, 44, 20); + tremoloSlider->setColour (Slider::thumbColourId, Colour (0xff00af00)); + tremoloSlider->setColour (Slider::trackColourId, Colour (0x7f007f00)); + tremoloSlider->setColour (Slider::textBoxTextColourId, Colour (0xff007f00)); + tremoloSlider->setColour (Slider::textBoxBackgroundColourId, Colours::black); + tremoloSlider->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00)); + tremoloSlider->addListener (this); + + addAndMakeVisible (frequencyLabel5 = new Label ("frequency label", + "Tremolo Depth\n")); + frequencyLabel5->setFont (Font (15.00f, Font::plain)); + frequencyLabel5->setJustificationType (Justification::centred); + frequencyLabel5->setEditable (false, false, false); + frequencyLabel5->setColour (Label::textColourId, Colour (0xff007f00)); + frequencyLabel5->setColour (TextEditor::textColourId, Colours::black); + frequencyLabel5->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + + addAndMakeVisible (dbLabel5 = new Label ("db label", + "dB")); + dbLabel5->setFont (Font (15.00f, Font::plain)); + dbLabel5->setJustificationType (Justification::centred); + dbLabel5->setEditable (false, false, false); + dbLabel5->setColour (Label::textColourId, Colour (0xff007f00)); + dbLabel5->setColour (Label::outlineColourId, Colour (0x00000000)); + dbLabel5->setColour (TextEditor::textColourId, Colours::black); + dbLabel5->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + + addAndMakeVisible (vibratoSlider = new Slider ("vibrato slider")); + vibratoSlider->setRange (7, 14, 7); + vibratoSlider->setSliderStyle (Slider::LinearHorizontal); + vibratoSlider->setTextBoxStyle (Slider::TextBoxLeft, false, 44, 20); + vibratoSlider->setColour (Slider::thumbColourId, Colour (0xff00af00)); + vibratoSlider->setColour (Slider::trackColourId, Colour (0x7f007f00)); + vibratoSlider->setColour (Slider::textBoxTextColourId, Colour (0xff007f00)); + vibratoSlider->setColour (Slider::textBoxBackgroundColourId, Colours::black); + vibratoSlider->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00)); + vibratoSlider->addListener (this); + + addAndMakeVisible (frequencyLabel6 = new Label ("frequency label", + "Vibrato Depth")); + frequencyLabel6->setFont (Font (15.00f, Font::plain)); + frequencyLabel6->setJustificationType (Justification::centred); + frequencyLabel6->setEditable (false, false, false); + frequencyLabel6->setColour (Label::textColourId, Colour (0xff007f00)); + frequencyLabel6->setColour (TextEditor::textColourId, Colours::black); + frequencyLabel6->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + + addAndMakeVisible (dbLabel6 = new Label ("db label", + "cents\n")); + dbLabel6->setFont (Font (15.00f, Font::plain)); + dbLabel6->setJustificationType (Justification::centred); + dbLabel6->setEditable (false, false, false); + dbLabel6->setColour (Label::textColourId, Colour (0xff007f00)); + dbLabel6->setColour (Label::outlineColourId, Colour (0x00000000)); + dbLabel6->setColour (TextEditor::textColourId, Colours::black); + dbLabel6->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + + addAndMakeVisible (feedbackSlider = new Slider ("feedback slider")); + feedbackSlider->setRange (0, 7, 1); + feedbackSlider->setSliderStyle (Slider::LinearHorizontal); + feedbackSlider->setTextBoxStyle (Slider::TextBoxRight, false, 44, 20); + feedbackSlider->setColour (Slider::thumbColourId, Colour (0xff00af00)); + feedbackSlider->setColour (Slider::trackColourId, Colour (0x7f007f00)); + feedbackSlider->setColour (Slider::textBoxTextColourId, Colour (0xff007f00)); + feedbackSlider->setColour (Slider::textBoxBackgroundColourId, Colours::black); + feedbackSlider->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00)); + feedbackSlider->addListener (this); + + addAndMakeVisible (frequencyLabel7 = new Label ("frequency label", + "Feedback")); + frequencyLabel7->setFont (Font (15.00f, Font::plain)); + frequencyLabel7->setJustificationType (Justification::centredLeft); + frequencyLabel7->setEditable (false, false, false); + frequencyLabel7->setColour (Label::textColourId, Colour (0xff007f00)); + frequencyLabel7->setColour (TextEditor::textColourId, Colours::black); + frequencyLabel7->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); + //[UserPreSize] frequencyComboBox->setColour (ComboBox::textColourId, Colour (COLOUR_MID)); @@ -612,7 +703,7 @@ PluginGui::PluginGui (JuceOplvstiAudioProcessor* ownerFilter) sustainButton2->setColour(TextButton::buttonColourId, Colour(COLOUR_MID)); //[/UserPreSize] - setSize (420, 620); + setSize (430, 800); //[Constructor] You can add your own custom stuff here.. @@ -677,6 +768,15 @@ PluginGui::~PluginGui() keyscaleSlider2 = nullptr; frequencyLabel4 = nullptr; dbLabel4 = nullptr; + groupComponent3 = nullptr; + tremoloSlider = nullptr; + frequencyLabel5 = nullptr; + dbLabel5 = nullptr; + vibratoSlider = nullptr; + frequencyLabel6 = nullptr; + dbLabel6 = nullptr; + feedbackSlider = nullptr; + frequencyLabel7 = nullptr; //[Destructor]. You can add your own custom destruction code here.. @@ -697,58 +797,67 @@ void PluginGui::paint (Graphics& g) void PluginGui::resized() { - groupComponent->setBounds (16, 8, 392, 296); - frequencyComboBox->setBounds (120, 80, 72, 24); - frequencyLabel->setBounds (16, 80, 96, 24); - aSlider->setBounds (40, 192, 48, 72); - aLabel->setBounds (40, 264, 48, 24); - dSlider->setBounds (104, 192, 48, 72); - dLabel->setBounds (104, 264, 48, 24); - sSlider->setBounds (168, 192, 48, 72); - dLabel2->setBounds (168, 264, 48, 24); - rSlider->setBounds (232, 192, 48, 72); - rLabel->setBounds (232, 264, 48, 24); - attenuationSlider->setBounds (296, 152, 72, 112); - attenuationLabel->setBounds (296, 264, 96, 24); - dbLabel->setBounds (360, 240, 40, 24); + groupComponent->setBounds (16, 8, 400, 336); + frequencyComboBox->setBounds (128, 80, 72, 24); + frequencyLabel->setBounds (32, 80, 80, 24); + aSlider->setBounds (40, 208, 48, 72); + aLabel->setBounds (40, 280, 48, 24); + dSlider->setBounds (104, 208, 48, 72); + dLabel->setBounds (104, 280, 48, 24); + sSlider->setBounds (168, 208, 48, 72); + dLabel2->setBounds (168, 280, 48, 24); + rSlider->setBounds (232, 208, 48, 72); + rLabel->setBounds (232, 280, 48, 24); + attenuationSlider->setBounds (304, 168, 72, 112); + attenuationLabel->setBounds (304, 280, 96, 24); + dbLabel->setBounds (368, 256, 40, 24); sineImageButton->setBounds (120, 40, 34, 30); halfsineImageButton->setBounds (176, 40, 34, 30); abssineImageButton->setBounds (232, 40, 34, 30); quartersineImageButton->setBounds (288, 40, 34, 30); - waveLabel->setBounds (16, 40, 96, 24); - tremoloButton->setBounds (40, 120, 96, 24); - vibratoButton->setBounds (40, 152, 96, 24); - sustainButton->setBounds (128, 120, 96, 24); - keyscaleEnvButton->setBounds (128, 152, 184, 24); - keyscaleSlider->setBounds (256, 96, 112, 24); - frequencyLabel2->setBounds (248, 120, 152, 24); - dbLabel2->setBounds (368, 88, 40, 40); - groupComponent2->setBounds (16, 320, 392, 296); - frequencyComboBox2->setBounds (120, 392, 72, 24); - frequencyLabel3->setBounds (16, 392, 96, 24); - aSlider2->setBounds (40, 504, 48, 72); - aLabel2->setBounds (40, 576, 48, 24); - dSlider2->setBounds (104, 504, 48, 72); - dLabel3->setBounds (104, 576, 48, 24); - sSlider2->setBounds (168, 504, 48, 72); - dLabel4->setBounds (168, 576, 48, 24); - rSlider2->setBounds (232, 504, 48, 72); - rLabel2->setBounds (232, 576, 48, 24); - attenuationSlider2->setBounds (296, 464, 72, 112); - attenuationLabel2->setBounds (296, 576, 96, 24); - dbLabel3->setBounds (360, 552, 40, 24); - sineImageButton2->setBounds (120, 352, 34, 30); - halfsineImageButton2->setBounds (176, 352, 34, 30); - abssineImageButton2->setBounds (232, 352, 34, 30); - quartersineImageButton2->setBounds (288, 352, 34, 30); - waveLabel2->setBounds (16, 352, 96, 24); - tremoloButton2->setBounds (40, 432, 96, 24); + waveLabel->setBounds (32, 40, 80, 24); + tremoloButton->setBounds (144, 120, 96, 24); + vibratoButton->setBounds (40, 120, 96, 24); + sustainButton->setBounds (40, 304, 96, 24); + keyscaleEnvButton->setBounds (136, 304, 184, 24); + keyscaleSlider->setBounds (256, 104, 112, 24); + frequencyLabel2->setBounds (248, 80, 152, 24); + dbLabel2->setBounds (368, 96, 40, 40); + groupComponent2->setBounds (16, 352, 400, 320); + frequencyComboBox2->setBounds (128, 424, 72, 24); + frequencyLabel3->setBounds (32, 424, 80, 24); + aSlider2->setBounds (40, 536, 48, 72); + aLabel2->setBounds (40, 608, 48, 24); + dSlider2->setBounds (104, 536, 48, 72); + dLabel3->setBounds (104, 608, 48, 24); + sSlider2->setBounds (168, 536, 48, 72); + dLabel4->setBounds (168, 608, 48, 24); + rSlider2->setBounds (232, 536, 48, 72); + rLabel2->setBounds (232, 608, 48, 24); + attenuationSlider2->setBounds (304, 496, 72, 112); + attenuationLabel2->setBounds (304, 608, 96, 24); + dbLabel3->setBounds (368, 584, 40, 24); + sineImageButton2->setBounds (120, 384, 34, 30); + halfsineImageButton2->setBounds (176, 384, 34, 30); + abssineImageButton2->setBounds (232, 384, 34, 30); + quartersineImageButton2->setBounds (288, 384, 34, 30); + waveLabel2->setBounds (32, 384, 80, 24); + tremoloButton2->setBounds (152, 464, 96, 24); vibratoButton2->setBounds (40, 464, 96, 24); - sustainButton2->setBounds (128, 432, 96, 24); - keyscaleEnvButton2->setBounds (128, 464, 184, 24); - keyscaleSlider2->setBounds (256, 408, 112, 24); - frequencyLabel4->setBounds (248, 432, 152, 24); - dbLabel4->setBounds (368, 400, 40, 40); + sustainButton2->setBounds (40, 632, 96, 24); + keyscaleEnvButton2->setBounds (136, 632, 184, 24); + keyscaleSlider2->setBounds (256, 448, 112, 24); + frequencyLabel4->setBounds (248, 424, 152, 24); + dbLabel4->setBounds (368, 440, 40, 40); + groupComponent3->setBounds (16, 680, 400, 96); + tremoloSlider->setBounds (48, 712, 112, 24); + frequencyLabel5->setBounds (40, 736, 152, 24); + dbLabel5->setBounds (160, 704, 40, 40); + vibratoSlider->setBounds (233, 713, 112, 24); + frequencyLabel6->setBounds (225, 737, 152, 24); + dbLabel6->setBounds (345, 705, 47, 40); + feedbackSlider->setBounds (120, 168, 136, 24); + frequencyLabel7->setBounds (32, 168, 80, 24); //[UserResized] Add your own custom resize handling here.. //[/UserResized] } @@ -856,6 +965,24 @@ void PluginGui::sliderValueChanged (Slider* sliderThatWasMoved) processor->setEnumParameter("Carrier Keyscale Level", -(int)(sliderThatWasMoved->getValue()/1.5)); //[/UserSliderCode_keyscaleSlider2] } + else if (sliderThatWasMoved == tremoloSlider) + { + //[UserSliderCode_tremoloSlider] -- add your slider handling code here.. + processor->setEnumParameter("Tremolo Depth", sliderThatWasMoved->getValue() < 2.0 ? 0 : 1); + //[/UserSliderCode_tremoloSlider] + } + else if (sliderThatWasMoved == vibratoSlider) + { + //[UserSliderCode_vibratoSlider] -- add your slider handling code here.. + processor->setEnumParameter("Vibrato Depth", sliderThatWasMoved->getValue() < 8.0 ? 0 : 1); + //[/UserSliderCode_vibratoSlider] + } + else if (sliderThatWasMoved == feedbackSlider) + { + //[UserSliderCode_feedbackSlider] -- add your slider handling code here.. + processor->setIntParameter("Modulator Feedback", (int)sliderThatWasMoved->getValue()); + //[/UserSliderCode_feedbackSlider] + } //[UsersliderValueChanged_Post] //[/UsersliderValueChanged_Post] @@ -986,76 +1113,76 @@ BEGIN_JUCER_METADATA parentClasses="public AudioProcessorEditor" constructorParams="JuceOplvstiAudioProcessor* ownerFilter" variableInitialisers=" AudioProcessorEditor (ownerFilter)" snapPixels="8" snapActive="1" snapShown="1" overlayOpacity="0.33" fixedSize="0" - initialWidth="420" initialHeight="620"> + initialWidth="430" initialHeight="800">