/*
==============================================================================
This is an automatically generated GUI class created by the Projucer!
Be careful when adding custom code to these files, as only the code within
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
and re-saved.
Created with Projucer version: 5.4.4
------------------------------------------------------------------------------
The Projucer is part of the JUCE library.
Copyright (c) 2017 - ROLI Ltd.
==============================================================================
*/
//[Headers] You can add your own extra header files here...
#include "AudioParameters.h"
//[/Headers]
#include "GuiTVAMod.h"
//[MiscUserDefs] You can add your own user definitions and misc code here...
//[/MiscUserDefs]
//==============================================================================
GUITVAMod::GUITVAMod ( const String& name, const String & text)
: GroupComponent (name, text)
{
//[Constructor_pre] You can add your own custom stuff here..
molossLNF = std::make_unique< MolossLookNFeel>(MolossLookNFeel::GREEN_LNF);
setLookAndFeel(molossLNF.get());
//[/Constructor_pre]
setName ("GUITVAMod");
controllerTVACombo.reset (new ComboBox ("controllerTVACombo"));
addAndMakeVisible (controllerTVACombo.get());
controllerTVACombo->setTooltip (TRANS("Additionnal controller to drive TVA"));
controllerTVACombo->setEditableText (false);
controllerTVACombo->setJustificationType (Justification::centredLeft);
controllerTVACombo->setTextWhenNothingSelected (String());
controllerTVACombo->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
controllerTVACombo->addListener (this);
labelAftrLvl.reset (new Label ("labelAftrLvl",
TRANS("Aftr>Level")));
addAndMakeVisible (labelAftrLvl.get());
labelAftrLvl->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelAftrLvl->setJustificationType (Justification::centred);
labelAftrLvl->setEditable (false, false, false);
labelAftrLvl->setColour (TextEditor::textColourId, Colours::black);
labelAftrLvl->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
aftrLevel.reset (new Slider ("aftrLevel"));
addAndMakeVisible (aftrLevel.get());
aftrLevel->setTooltip (TRANS("Influence of atertouch on level"));
aftrLevel->setRange (-100, 100, 1);
aftrLevel->setSliderStyle (Slider::RotaryVerticalDrag);
aftrLevel->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
labelCtrlLvl.reset (new Label ("labelCtrlLvl",
TRANS("Ctrl>Level")));
addAndMakeVisible (labelCtrlLvl.get());
labelCtrlLvl->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelCtrlLvl->setJustificationType (Justification::centred);
labelCtrlLvl->setEditable (false, false, false);
labelCtrlLvl->setColour (TextEditor::textColourId, Colours::black);
labelCtrlLvl->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
ctrlLevel.reset (new Slider ("ctrlLevel"));
addAndMakeVisible (ctrlLevel.get());
ctrlLevel->setTooltip (TRANS("Influence of controller on level"));
ctrlLevel->setRange (0, 100, 1);
ctrlLevel->setSliderStyle (Slider::RotaryVerticalDrag);
ctrlLevel->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
labelHoldRelease.reset (new Label ("labelHoldRelease",
TRANS("Hold>Release")));
addAndMakeVisible (labelHoldRelease.get());
labelHoldRelease->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelHoldRelease->setJustificationType (Justification::centred);
labelHoldRelease->setEditable (false, false, false);
labelHoldRelease->setColour (TextEditor::textColourId, Colours::black);
labelHoldRelease->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
holdReleaseLevel.reset (new Slider ("holdReleaseLevel"));
addAndMakeVisible (holdReleaseLevel.get());
holdReleaseLevel->setTooltip (TRANS("Influence of hold pedal on TVA release"));
holdReleaseLevel->setRange (0, 100, 1);
holdReleaseLevel->setSliderStyle (Slider::RotaryVerticalDrag);
holdReleaseLevel->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
benderTVA.reset (new Slider ("benderTVA"));
addAndMakeVisible (benderTVA.get());
benderTVA->setTooltip (TRANS("Influence of bender on level"));
benderTVA->setRange (0, 100, 1);
benderTVA->setSliderStyle (Slider::RotaryVerticalDrag);
benderTVA->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
labelBenderPitch2.reset (new Label ("labelBenderPitch",
TRANS("Bender")));
addAndMakeVisible (labelBenderPitch2.get());
labelBenderPitch2->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelBenderPitch2->setJustificationType (Justification::centred);
labelBenderPitch2->setEditable (false, false, false);
labelBenderPitch2->setColour (TextEditor::textColourId, Colours::black);
labelBenderPitch2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
//[UserPreSize]
//[/UserPreSize]
setSize (600, 400);
//[Constructor] You can add your own custom stuff here..
//[/Constructor]
}
GUITVAMod::~GUITVAMod()
{
//[Destructor_pre]. You can add your own custom destruction code here..
mAttachment = nullptr;
setLookAndFeel(nullptr);
//[/Destructor_pre]
controllerTVACombo = nullptr;
labelAftrLvl = nullptr;
aftrLevel = nullptr;
labelCtrlLvl = nullptr;
ctrlLevel = nullptr;
labelHoldRelease = nullptr;
holdReleaseLevel = nullptr;
benderTVA = nullptr;
labelBenderPitch2 = nullptr;
//[Destructor]. You can add your own custom destruction code here..
//[/Destructor]
}
//==============================================================================
void GUITVAMod::paint (Graphics& g)
{
//[UserPrePaint] Add your own custom painting code here..
GroupComponent::paint(g);
//[/UserPrePaint]
//[UserPaint] Add your own custom painting code here..
//[/UserPaint]
}
void GUITVAMod::resized()
{
//[UserPreResize] Add your own custom resize code here..
//[/UserPreResize]
controllerTVACombo->setBounds (120 - (176 / 2), 20, 176, 24);
labelAftrLvl->setBounds (82 - (73 / 2), 65 - (24 / 2), 73, 24);
aftrLevel->setBounds (82 - (56 / 2), 105 - (72 / 2), 56, 72);
labelCtrlLvl->setBounds (158 - (73 / 2), (65 - (24 / 2)) + 24 / 2 - (24 / 2), 73, 24);
ctrlLevel->setBounds (158 - (56 / 2), (105 - (72 / 2)) + 72 / 2 - (72 / 2), 56, 72);
labelHoldRelease->setBounds (82 - (82 / 2), 149 - (24 / 2), 82, 24);
holdReleaseLevel->setBounds (82 - (56 / 2), 189 - (72 / 2), 56, 72);
benderTVA->setBounds (158 - (56 / 2), (189 - (72 / 2)) + 72 / 2 - (72 / 2), 56, 72);
labelBenderPitch2->setBounds (158 - (73 / 2), (149 - (24 / 2)) + 24 / 2 - (24 / 2), 73, 24);
//[UserResized] Add your own custom resize handling here..
//[/UserResized]
}
void GUITVAMod::comboBoxChanged (ComboBox* comboBoxThatHasChanged)
{
//[UsercomboBoxChanged_Pre]
//[/UsercomboBoxChanged_Pre]
if (comboBoxThatHasChanged == controllerTVACombo.get())
{
//[UserComboBoxCode_controllerTVACombo] -- add your combo box handling code here..
//[/UserComboBoxCode_controllerTVACombo]
}
//[UsercomboBoxChanged_Post]
//[/UsercomboBoxChanged_Post]
}
//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
void GUITVAMod::setParameters(TVAParameters * tvaParam) {
mTVAParameters = tvaParam;
mAttachment = std::make_unique<GuiAttachment>(mTVAParameters->getProcessor());
updateFromParameters();
}
void GUITVAMod::updateFromParameters()
{
mAttachment->attachSlider(mTVAParameters->mAfterTouchLevelDepth, *aftrLevel);
mAttachment->attachSlider(mTVAParameters->mControllerLevelDepth, *ctrlLevel);
mAttachment->attachSlider(mTVAParameters->mPitchWheelLevelDepth, *benderTVA);
mAttachment->attachCombobox(mTVAParameters->mControlNumber, *controllerTVACombo);
mAttachment->attachSlider(mTVAParameters->mHoldRelease, *holdReleaseLevel);
}
//[/MiscUserCode]
//==============================================================================
#if 0
/* -- Projucer information section --
This is where the Projucer stores the metadata that describe this GUI layout, so
make changes in here at your peril!
BEGIN_JUCER_METADATA
<JUCER_COMPONENT documentType="Component" className="GUITVAMod" componentName="GUITVAMod"
parentClasses="public GroupComponent" constructorParams=" const String& name, const String & text"
variableInitialisers="GroupComponent (name, text) " snapPixels="8"
snapActive="1" snapShown="1" overlayOpacity="0.330" fixedSize="0"
initialWidth="600" initialHeight="400">
<BACKGROUND backgroundColour="323e44"/>
<COMBOBOX name="controllerTVACombo" id="4318b7efdaf7c09f" memberName="controllerTVACombo"
virtualName="" explicitFocusOrder="0" pos="120c 20 176 24" tooltip="Additionnal controller to drive TVA"
editable="0" layout="33" items="" textWhenNonSelected="" textWhenNoItems="(no choices)"/>
<LABEL name="labelAftrLvl" id="2768f143efd1d706" memberName="labelAftrLvl"
virtualName="" explicitFocusOrder="0" pos="82.5c 65c 73 24" edTextCol="ff000000"
edBkgCol="0" labelText="Aftr>Level" editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<SLIDER name="aftrLevel" id="3c9c5d0350ab5df7" memberName="aftrLevel"
virtualName="" explicitFocusOrder="0" pos="82c 105c 56 72" posRelativeX="b8a5ef2d0601f570"
posRelativeY="b8a5ef2d0601f570" tooltip="Influence of atertouch on level"
min="-100.0" max="100.0" int="1.0" style="RotaryVerticalDrag"
textBoxPos="TextBoxBelow" textBoxEditable="1" textBoxWidth="40"
textBoxHeight="20" skewFactor="1.0" needsCallback="0"/>
<LABEL name="labelCtrlLvl" id="801f86fdd23d9725" memberName="labelCtrlLvl"
virtualName="" explicitFocusOrder="0" pos="158.5c 0Cc 73 24"
posRelativeY="2768f143efd1d706" edTextCol="ff000000" edBkgCol="0"
labelText="Ctrl>Level" editableSingleClick="0" editableDoubleClick="0"
focusDiscardsChanges="0" fontname="Default font" fontsize="15.0"
kerning="0.0" bold="0" italic="0" justification="36"/>
<SLIDER name="ctrlLevel" id="b6dcfe415b85786e" memberName="ctrlLevel"
virtualName="" explicitFocusOrder="0" pos="158c 0Cc 56 72" posRelativeX="b8a5ef2d0601f570"
posRelativeY="3c9c5d0350ab5df7" tooltip="Influence of controller on level"
min="0.0" max="100.0" int="1.0" style="RotaryVerticalDrag" textBoxPos="TextBoxBelow"
textBoxEditable="1" textBoxWidth="40" textBoxHeight="20" skewFactor="1.0"
needsCallback="0"/>
<LABEL name="labelHoldRelease" id="cd44b9f3d80dcd39" memberName="labelHoldRelease"
virtualName="" explicitFocusOrder="0" pos="82c 149c 82 24" edTextCol="ff000000"
edBkgCol="0" labelText="Hold>Release" editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<SLIDER name="holdReleaseLevel" id="dc1d146aa2fc0576" memberName="holdReleaseLevel"
virtualName="" explicitFocusOrder="0" pos="82c 189c 56 72" posRelativeX="b8a5ef2d0601f570"
posRelativeY="b8a5ef2d0601f570" tooltip="Influence of hold pedal on TVA release"
min="0.0" max="100.0" int="1.0" style="RotaryVerticalDrag" textBoxPos="TextBoxBelow"
textBoxEditable="1" textBoxWidth="40" textBoxHeight="20" skewFactor="1.0"
needsCallback="0"/>
<SLIDER name="benderTVA" id="8baba07e52b96391" memberName="benderTVA"
virtualName="" explicitFocusOrder="0" pos="158c 0Cc 56 72" posRelativeX="b8a5ef2d0601f570"
posRelativeY="dc1d146aa2fc0576" tooltip="Influence of bender on level"
min="0.0" max="100.0" int="1.0" style="RotaryVerticalDrag" textBoxPos="TextBoxBelow"
textBoxEditable="1" textBoxWidth="40" textBoxHeight="20" skewFactor="1.0"
needsCallback="0"/>
<LABEL name="labelBenderPitch" id="1932bd944b3db32c" memberName="labelBenderPitch2"
virtualName="" explicitFocusOrder="0" pos="158.5c 0Cc 73 24"
posRelativeY="cd44b9f3d80dcd39" edTextCol="ff000000" edBkgCol="0"
labelText="Bender" editableSingleClick="0" editableDoubleClick="0"
focusDiscardsChanges="0" fontname="Default font" fontsize="15.0"
kerning="0.0" bold="0" italic="0" justification="36"/>
</JUCER_COMPONENT>
END_JUCER_METADATA
*/
#endif
//[EndFile] You can add extra defines here...
//[/EndFile]