/*
==============================================================================
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 "GuiADSR.h"
//[MiscUserDefs] You can add your own user definitions and misc code here...
//[/MiscUserDefs]
//==============================================================================
GuiADSR::GuiADSR ( const String& name, const String & text)
: GroupComponent (name, text)
{
//[Constructor_pre] You can add your own custom stuff here..
//[/Constructor_pre]
setName ("GuiADSR");
attack.reset (new Slider ("attack"));
addAndMakeVisible (attack.get());
attack->setTooltip (TRANS("Attack time"));
attack->setRange (0, 100, 1);
attack->setSliderStyle (Slider::RotaryVerticalDrag);
attack->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
labelA.reset (new Label ("labelA",
TRANS("Attack\n")));
addAndMakeVisible (labelA.get());
labelA->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelA->setJustificationType (Justification::centred);
labelA->setEditable (false, false, false);
labelA->setColour (TextEditor::textColourId, Colours::black);
labelA->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
decay.reset (new Slider ("decay"));
addAndMakeVisible (decay.get());
decay->setTooltip (TRANS("Decay time"));
decay->setRange (0, 100, 1);
decay->setSliderStyle (Slider::RotaryVerticalDrag);
decay->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
labelD.reset (new Label ("labelD",
TRANS("Decay")));
addAndMakeVisible (labelD.get());
labelD->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelD->setJustificationType (Justification::centred);
labelD->setEditable (false, false, false);
labelD->setColour (TextEditor::textColourId, Colours::black);
labelD->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
sustain.reset (new Slider ("sustain"));
addAndMakeVisible (sustain.get());
sustain->setTooltip (TRANS("Sustain level"));
sustain->setRange (0, 100, 1);
sustain->setSliderStyle (Slider::RotaryVerticalDrag);
sustain->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
labelS.reset (new Label ("labelS",
TRANS("Sustain")));
addAndMakeVisible (labelS.get());
labelS->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelS->setJustificationType (Justification::centred);
labelS->setEditable (false, false, false);
labelS->setColour (TextEditor::textColourId, Colours::black);
labelS->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
release.reset (new Slider ("release"));
addAndMakeVisible (release.get());
release->setTooltip (TRANS("Release time"));
release->setRange (0, 100, 1);
release->setSliderStyle (Slider::RotaryVerticalDrag);
release->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
labelR.reset (new Label ("labelR",
TRANS("Release")));
addAndMakeVisible (labelR.get());
labelR->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelR->setJustificationType (Justification::centred);
labelR->setEditable (false, false, false);
labelR->setColour (TextEditor::textColourId, Colours::black);
labelR->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
delaySlider.reset (new Slider ("delaySlider"));
addAndMakeVisible (delaySlider.get());
delaySlider->setTooltip (TRANS("Delay before attack starts"));
delaySlider->setRange (0, 100, 1);
delaySlider->setSliderStyle (Slider::RotaryVerticalDrag);
delaySlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
labelADSRDepth.reset (new Label ("labelADSRDepth",
TRANS("Delay")));
addAndMakeVisible (labelADSRDepth.get());
labelADSRDepth->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelADSRDepth->setJustificationType (Justification::centred);
labelADSRDepth->setEditable (false, false, false);
labelADSRDepth->setColour (TextEditor::textColourId, Colours::black);
labelADSRDepth->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
veloADSRLabel.reset (new Label ("veloADSRLabel",
TRANS("Vel>Dpt")));
addAndMakeVisible (veloADSRLabel.get());
veloADSRLabel->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
veloADSRLabel->setJustificationType (Justification::centred);
veloADSRLabel->setEditable (false, false, false);
veloADSRLabel->setColour (TextEditor::textColourId, Colours::black);
veloADSRLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
veloADSRSlider.reset (new Slider ("veloADSRSlider"));
addAndMakeVisible (veloADSRSlider.get());
veloADSRSlider->setTooltip (TRANS("Defines how velocity affects envelope depth."));
veloADSRSlider->setRange (0, 100, 1);
veloADSRSlider->setSliderStyle (Slider::RotaryVerticalDrag);
veloADSRSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
veloAttackLabel.reset (new Label ("veloAttackLabel",
TRANS("Vel>Atk")));
addAndMakeVisible (veloAttackLabel.get());
veloAttackLabel->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
veloAttackLabel->setJustificationType (Justification::centred);
veloAttackLabel->setEditable (false, false, false);
veloAttackLabel->setColour (TextEditor::textColourId, Colours::black);
veloAttackLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
veloAttackSlider.reset (new Slider ("veloAttackSlider"));
addAndMakeVisible (veloAttackSlider.get());
veloAttackSlider->setTooltip (TRANS("Influence of velocity on attack time. Attack time reduces when velocity augments."));
veloAttackSlider->setRange (0, 100, 1);
veloAttackSlider->setSliderStyle (Slider::RotaryVerticalDrag);
veloAttackSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
kfAttackLabel.reset (new Label ("kfAttackLabel",
TRANS("KF>Atk")));
addAndMakeVisible (kfAttackLabel.get());
kfAttackLabel->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
kfAttackLabel->setJustificationType (Justification::centred);
kfAttackLabel->setEditable (false, false, false);
kfAttackLabel->setColour (TextEditor::textColourId, Colours::black);
kfAttackLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
kfAttackSlider.reset (new Slider ("kfAttackSlider"));
addAndMakeVisible (kfAttackSlider.get());
kfAttackSlider->setTooltip (TRANS("Influence of key on attack time. Attack time reduces for higher notes."));
kfAttackSlider->setRange (0, 100, 1);
kfAttackSlider->setSliderStyle (Slider::RotaryVerticalDrag);
kfAttackSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
copyButton.reset (new TextButton ("copyButton"));
addAndMakeVisible (copyButton.get());
copyButton->setTooltip (TRANS("Copy enveloppe Parameters"));
copyButton->setButtonText (TRANS("C"));
copyButton->addListener (this);
copyButton->setBounds (224, 32, 24, 24);
pasteButton.reset (new TextButton ("pasteButton"));
addAndMakeVisible (pasteButton.get());
pasteButton->setTooltip (TRANS("Paste enveloppe Parameters"));
pasteButton->setButtonText (TRANS("P"));
pasteButton->addListener (this);
pasteButton->setBounds (224, 64, 24, 24);
groupLink.reset (new ComboBox ("groupLink"));
addAndMakeVisible (groupLink.get());
groupLink->setTooltip (TRANS("Group to which this envelope is linked. All envelopes of a group have the same parameters."));
groupLink->setEditableText (false);
groupLink->setJustificationType (Justification::centred);
groupLink->setTextWhenNothingSelected (String());
groupLink->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
groupLink->addListener (this);
//[UserPreSize]
//[/UserPreSize]
setSize (220, 110);
//[Constructor] You can add your own custom stuff here..
//[/Constructor]
}
GuiADSR::~GuiADSR()
{
//[Destructor_pre]. You can add your own custom destruction code here..
mAttachment = nullptr;
//[/Destructor_pre]
attack = nullptr;
labelA = nullptr;
decay = nullptr;
labelD = nullptr;
sustain = nullptr;
labelS = nullptr;
release = nullptr;
labelR = nullptr;
delaySlider = nullptr;
labelADSRDepth = nullptr;
veloADSRLabel = nullptr;
veloADSRSlider = nullptr;
veloAttackLabel = nullptr;
veloAttackSlider = nullptr;
kfAttackLabel = nullptr;
kfAttackSlider = nullptr;
copyButton = nullptr;
pasteButton = nullptr;
groupLink = nullptr;
//[Destructor]. You can add your own custom destruction code here..
//[/Destructor]
}
//==============================================================================
void GuiADSR::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 GuiADSR::resized()
{
//[UserPreResize] Add your own custom resize code here..
//[/UserPreResize]
attack->setBounds (33 - (56 / 2), 67 - (72 / 2), 56, 72);
labelA->setBounds (32 - (55 / 2), 27 - (24 / 2), 55, 24);
decay->setBounds (86 - (56 / 2), (67 - (72 / 2)) + 72 / 2 - (72 / 2), 56, 72);
labelD->setBounds (86 - (55 / 2), (27 - (24 / 2)) + 24 / 2 - (24 / 2), 55, 24);
sustain->setBounds (140 - (56 / 2), (67 - (72 / 2)) + 72 / 2 - (72 / 2), 56, 72);
labelS->setBounds (140 - (55 / 2), (27 - (24 / 2)) + 24 / 2 - (24 / 2), 55, 24);
release->setBounds (194 - (56 / 2), (67 - (72 / 2)) + 72 / 2 - (72 / 2), 56, 72);
labelR->setBounds (194 - (55 / 2), (27 - (24 / 2)) + 24 / 2 - (24 / 2), 55, 24);
delaySlider->setBounds ((32 - (47 / 2)) + 47 / 2 - (56 / 2), 151 - (72 / 2), 56, 72);
labelADSRDepth->setBounds (32 - (47 / 2), 111 - (24 / 2), 47, 24);
veloADSRLabel->setBounds (86 - (49 / 2), (111 - (24 / 2)) + 24 / 2 - (24 / 2), 49, 24);
veloADSRSlider->setBounds ((86 - (49 / 2)) + 49 / 2 - (56 / 2), (151 - (72 / 2)) + 72 / 2 - (72 / 2), 56, 72);
veloAttackLabel->setBounds (140 - (52 / 2), (111 - (24 / 2)) + 24 / 2 - (24 / 2), 52, 24);
veloAttackSlider->setBounds ((140 - (52 / 2)) + 52 / 2 - (56 / 2), (151 - (72 / 2)) + 72 / 2 - (72 / 2), 56, 72);
kfAttackLabel->setBounds (194 - (52 / 2), (111 - (24 / 2)) + 24 / 2 - (24 / 2), 52, 24);
kfAttackSlider->setBounds ((194 - (52 / 2)) + 52 / 2 - (56 / 2), (151 - (72 / 2)) + 72 / 2 - (72 / 2), 56, 72);
groupLink->setBounds (236 - (29 / 2), 12 - (24 / 2), 29, 24);
//[UserResized] Add your own custom resize handling here..
//[/UserResized]
}
void GuiADSR::buttonClicked (Button* buttonThatWasClicked)
{
//[UserbuttonClicked_Pre]
//[/UserbuttonClicked_Pre]
if (buttonThatWasClicked == copyButton.get())
{
//[UserButtonCode_copyButton] -- add your button handler code here..
mADSRParameters->copyParameters();
//[/UserButtonCode_copyButton]
}
else if (buttonThatWasClicked == pasteButton.get())
{
//[UserButtonCode_pasteButton] -- add your button handler code here..
mADSRParameters->pasteParameters(String(),"ADSR");
//[/UserButtonCode_pasteButton]
}
//[UserbuttonClicked_Post]
//[/UserbuttonClicked_Post]
}
void GuiADSR::comboBoxChanged (ComboBox* comboBoxThatHasChanged)
{
//[UsercomboBoxChanged_Pre]
//[/UsercomboBoxChanged_Pre]
if (comboBoxThatHasChanged == groupLink.get())
{
//[UserComboBoxCode_groupLink] -- add your combo box handling code here..
//[/UserComboBoxCode_groupLink]
}
//[UsercomboBoxChanged_Post]
//[/UsercomboBoxChanged_Post]
}
//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
void GuiADSR::setParameters(TimeVariantParameters * param) {
mADSRParameters = param;
mAttachment = std::make_unique<GuiAttachment>(mADSRParameters->getProcessor());
updateFromParameters();
}
void GuiADSR::updateFromParameters()
{
mAttachment->attachSlider(mADSRParameters->mDelay, *delaySlider);
mAttachment->attachSlider(mADSRParameters->mAttack, *attack);
mAttachment->attachSlider(mADSRParameters->mDecay, *decay);
mAttachment->attachSlider(mADSRParameters->mSustain, *sustain);
mAttachment->attachSlider(mADSRParameters->mRelease, *release);
mAttachment->attachSlider(mADSRParameters->mVeloDepth, *veloADSRSlider);
mAttachment->attachSlider(mADSRParameters->mVeloAttack, *veloAttackSlider);
mAttachment->attachSlider(mADSRParameters->mAttackKF, *kfAttackSlider);
mAttachment->attachCombobox(mADSRParameters->mADSRLinkGroup, *groupLink);
}
void GuiADSR::copy(TimeVariantParameters * param)
{
*mADSRParameters->mDelay = float(*param->mDelay);
*mADSRParameters->mAttack = float(*param->mAttack);
*mADSRParameters->mDecay = float(*param->mDecay);
*mADSRParameters->mSustain = float(*param->mSustain);
*mADSRParameters->mRelease = float(*param->mRelease);
*mADSRParameters->mADSRDepth = float(*param->mADSRDepth);
*mADSRParameters->mVeloDepth = float(*param->mVeloDepth);
*mADSRParameters->mVeloAttack = float(*param->mVeloAttack);
*mADSRParameters->mAttackKF = float(*param->mAttackKF);
}
//[/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="GuiADSR" componentName="GuiADSR"
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="220" initialHeight="110">
<BACKGROUND backgroundColour="323e44"/>
<SLIDER name="attack" id="47970c50792f9c3" memberName="attack" virtualName=""
explicitFocusOrder="0" pos="33c 67c 56 72" tooltip="Attack time"
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="labelA" id="dd1e23869ec5a618" memberName="labelA" virtualName=""
explicitFocusOrder="0" pos="31.5c 27c 55 24" edTextCol="ff000000"
edBkgCol="0" labelText="Attack " editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<SLIDER name="decay" id="8eb21699729b2458" memberName="decay" virtualName=""
explicitFocusOrder="0" pos="86c 0Cc 56 72" posRelativeY="47970c50792f9c3"
tooltip="Decay time" 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="labelD" id="95a19e1f40c84ecf" memberName="labelD" virtualName=""
explicitFocusOrder="0" pos="85.5c 0Cc 55 24" posRelativeY="dd1e23869ec5a618"
edTextCol="ff000000" edBkgCol="0" labelText="Decay" editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<SLIDER name="sustain" id="5bccbb74180157e3" memberName="sustain" virtualName=""
explicitFocusOrder="0" pos="140c 0Cc 56 72" posRelativeY="47970c50792f9c3"
tooltip="Sustain 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="labelS" id="50db4396a4128c96" memberName="labelS" virtualName=""
explicitFocusOrder="0" pos="139.5c 0Cc 55 24" posRelativeY="dd1e23869ec5a618"
edTextCol="ff000000" edBkgCol="0" labelText="Sustain" editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<SLIDER name="release" id="db23caf3df2514ef" memberName="release" virtualName=""
explicitFocusOrder="0" pos="194c 0Cc 56 72" posRelativeY="47970c50792f9c3"
tooltip="Release time" 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="labelR" id="a2e0a28f68354c62" memberName="labelR" virtualName=""
explicitFocusOrder="0" pos="193.5c 0Cc 55 24" posRelativeY="dd1e23869ec5a618"
edTextCol="ff000000" edBkgCol="0" labelText="Release" editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<SLIDER name="delaySlider" id="1ee1f85231b01491" memberName="delaySlider"
virtualName="" explicitFocusOrder="0" pos="0Cc 151c 56 72" posRelativeX="7f1c016bfd48e1db"
posRelativeY="d43004658944c0e8" tooltip="Delay before attack starts"
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="labelADSRDepth" id="7f1c016bfd48e1db" memberName="labelADSRDepth"
virtualName="" explicitFocusOrder="0" pos="31.5c 111c 47 24"
edTextCol="ff000000" edBkgCol="0" labelText="Delay" editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<LABEL name="veloADSRLabel" id="38b77a0f72119683" memberName="veloADSRLabel"
virtualName="" explicitFocusOrder="0" pos="86.5c 0Cc 49 24" posRelativeY="7f1c016bfd48e1db"
edTextCol="ff000000" edBkgCol="0" labelText="Vel>Dpt" editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<SLIDER name="veloADSRSlider" id="23734a4a6a030750" memberName="veloADSRSlider"
virtualName="" explicitFocusOrder="0" pos="0Cc 0Cc 56 72" posRelativeX="38b77a0f72119683"
posRelativeY="1ee1f85231b01491" tooltip="Defines how velocity affects envelope depth."
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="veloAttackLabel" id="9f4ef6df2437312" memberName="veloAttackLabel"
virtualName="" explicitFocusOrder="0" pos="140c 0Cc 52 24" posRelativeY="7f1c016bfd48e1db"
edTextCol="ff000000" edBkgCol="0" labelText="Vel>Atk" editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<SLIDER name="veloAttackSlider" id="47d9551a2107f9ff" memberName="veloAttackSlider"
virtualName="" explicitFocusOrder="0" pos="0Cc 0Cc 56 72" posRelativeX="9f4ef6df2437312"
posRelativeY="1ee1f85231b01491" tooltip="Influence of velocity on attack time. Attack time reduces when velocity augments."
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="kfAttackLabel" id="8c28bf2d3ff81344" memberName="kfAttackLabel"
virtualName="" explicitFocusOrder="0" pos="194c 0Cc 52 24" posRelativeY="7f1c016bfd48e1db"
edTextCol="ff000000" edBkgCol="0" labelText="KF>Atk" editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<SLIDER name="kfAttackSlider" id="214c59ebaa068f3" memberName="kfAttackSlider"
virtualName="" explicitFocusOrder="0" pos="0Cc 0Cc 56 72" posRelativeX="8c28bf2d3ff81344"
posRelativeY="1ee1f85231b01491" tooltip="Influence of key on attack time. Attack time reduces for higher notes."
min="0.0" max="100.0" int="1.0" style="RotaryVerticalDrag" textBoxPos="TextBoxBelow"
textBoxEditable="1" textBoxWidth="40" textBoxHeight="20" skewFactor="1.0"
needsCallback="0"/>
<TEXTBUTTON name="copyButton" id="36caa20fb07405f3" memberName="copyButton"
virtualName="" explicitFocusOrder="0" pos="224 32 24 24" tooltip="Copy enveloppe Parameters"
buttonText="C" connectedEdges="0" needsCallback="1" radioGroupId="0"/>
<TEXTBUTTON name="pasteButton" id="4af5e8f91f632b47" memberName="pasteButton"
virtualName="" explicitFocusOrder="0" pos="224 64 24 24" tooltip="Paste enveloppe Parameters"
buttonText="P" connectedEdges="0" needsCallback="1" radioGroupId="0"/>
<COMBOBOX name="groupLink" id="2f4c27038f31a098" memberName="groupLink"
virtualName="" explicitFocusOrder="0" pos="235.5c 12c 29 24"
posRelativeY="2bec03bff2a1a6d8" tooltip="Group to which this envelope is linked. All envelopes of a group have the same parameters."
editable="0" layout="36" items="" textWhenNonSelected="" textWhenNoItems="(no choices)"/>
</JUCER_COMPONENT>
END_JUCER_METADATA
*/
#endif
//[EndFile] You can add extra defines here...
//[/EndFile]