/*
==============================================================================
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 "GuiLFO.h"
#include "AudioParameters.h"
//[/Headers]
#include "GuiVCO.h"
//[MiscUserDefs] You can add your own user definitions and misc code here...
//[/MiscUserDefs]
//==============================================================================
GuiVCO::GuiVCO ( 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::BLUE_LNF);
setLookAndFeel(molossLNF.get());
//[/Constructor_pre]
setName ("GuiVCO");
squareSlider.reset (new Slider ("squareSlider"));
addAndMakeVisible (squareSlider.get());
squareSlider->setTooltip (TRANS("Amount of Square wave in output"));
squareSlider->setRange (0, 100, 1);
squareSlider->setSliderStyle (Slider::RotaryVerticalDrag);
squareSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
subSlider.reset (new Slider ("subSlider"));
addAndMakeVisible (subSlider.get());
subSlider->setTooltip (TRANS("Amount of Sub Square Wave in Output"));
subSlider->setRange (0, 100, 1);
subSlider->setSliderStyle (Slider::RotaryVerticalDrag);
subSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
sawSlider.reset (new Slider ("SawSlider"));
addAndMakeVisible (sawSlider.get());
sawSlider->setTooltip (TRANS("Amount of sawtooth wave in output"));
sawSlider->setRange (0, 100, 1);
sawSlider->setSliderStyle (Slider::RotaryVerticalDrag);
sawSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
labelSaw.reset (new Label ("labelSaw",
TRANS("Saw")));
addAndMakeVisible (labelSaw.get());
labelSaw->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelSaw->setJustificationType (Justification::centred);
labelSaw->setEditable (false, false, false);
labelSaw->setColour (TextEditor::textColourId, Colours::black);
labelSaw->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
labelSub.reset (new Label ("labelSub",
TRANS("Sub")));
addAndMakeVisible (labelSub.get());
labelSub->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelSub->setJustificationType (Justification::centred);
labelSub->setEditable (false, false, false);
labelSub->setColour (TextEditor::textColourId, Colours::black);
labelSub->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
labelSquare.reset (new Label ("labelSquare",
TRANS("Square")));
addAndMakeVisible (labelSquare.get());
labelSquare->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelSquare->setJustificationType (Justification::centred);
labelSquare->setEditable (false, false, false);
labelSquare->setColour (TextEditor::textColourId, Colours::black);
labelSquare->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
labelPWM.reset (new Label ("labelPWM",
TRANS("Sqr PW")));
addAndMakeVisible (labelPWM.get());
labelPWM->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelPWM->setJustificationType (Justification::centred);
labelPWM->setEditable (false, false, false);
labelPWM->setColour (TextEditor::textColourId, Colours::black);
labelPWM->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
labelSine.reset (new Label ("labelSine",
TRANS("Sine")));
addAndMakeVisible (labelSine.get());
labelSine->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelSine->setJustificationType (Justification::centred);
labelSine->setEditable (false, false, false);
labelSine->setColour (TextEditor::textColourId, Colours::black);
labelSine->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
pwmLFOGroup.reset (new GuiLFO ("pwmLFO",
TRANS("PWM LFO")));
addAndMakeVisible (pwmLFOGroup.get());
pwmLFOGroup->setTextLabelPosition (Justification::centredLeft);
pwmLFOGroup->setBounds (16, 504, 238, 190);
labelEven.reset (new Label ("labelEven",
TRANS("Even h.\n")));
addAndMakeVisible (labelEven.get());
labelEven->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelEven->setJustificationType (Justification::centred);
labelEven->setEditable (false, false, false);
labelEven->setColour (TextEditor::textColourId, Colours::black);
labelEven->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
labelOdd.reset (new Label ("labelOdd",
TRANS("Odd h.")));
addAndMakeVisible (labelOdd.get());
labelOdd->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelOdd->setJustificationType (Justification::centred);
labelOdd->setEditable (false, false, false);
labelOdd->setColour (TextEditor::textColourId, Colours::black);
labelOdd->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
sineSlider.reset (new Slider ("sineSlider"));
addAndMakeVisible (sineSlider.get());
sineSlider->setTooltip (TRANS("Amount of sine wave in output"));
sineSlider->setRange (0, 100, 1);
sineSlider->setSliderStyle (Slider::RotaryVerticalDrag);
sineSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
pwmSlider.reset (new Slider ("pwmSlider"));
addAndMakeVisible (pwmSlider.get());
pwmSlider->setTooltip (TRANS("Pulse width of square wave"));
pwmSlider->setRange (0, 100, 1);
pwmSlider->setSliderStyle (Slider::RotaryVerticalDrag);
pwmSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
sliderHOdd.reset (new Slider ("sliderHOdd"));
addAndMakeVisible (sliderHOdd.get());
sliderHOdd->setTooltip (TRANS("Amount of Odd harmonics in sine wave"));
sliderHOdd->setRange (0, 100, 1);
sliderHOdd->setSliderStyle (Slider::RotaryVerticalDrag);
sliderHOdd->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
sliderHEven.reset (new Slider ("sliderHEven"));
addAndMakeVisible (sliderHEven.get());
sliderHEven->setTooltip (TRANS("Amont of Even harmonics in sine wave"));
sliderHEven->setRange (0, 100, 1);
sliderHEven->setSliderStyle (Slider::RotaryVerticalDrag);
sliderHEven->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
sawPhaseSlider.reset (new Slider ("sawPhaseSlider"));
addAndMakeVisible (sawPhaseSlider.get());
sawPhaseSlider->setTooltip (TRANS("Phase of sawtooth wave / sine wave"));
sawPhaseSlider->setRange (0, 100, 1);
sawPhaseSlider->setSliderStyle (Slider::RotaryVerticalDrag);
sawPhaseSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
labelSawPhase.reset (new Label ("labelSawPhase",
TRANS("Saw Phase")));
addAndMakeVisible (labelSawPhase.get());
labelSawPhase->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelSawPhase->setJustificationType (Justification::centred);
labelSawPhase->setEditable (false, false, false);
labelSawPhase->setColour (TextEditor::textColourId, Colours::black);
labelSawPhase->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
subPhaseSlider.reset (new Slider ("subPhaseSlider"));
addAndMakeVisible (subPhaseSlider.get());
subPhaseSlider->setTooltip (TRANS("Phase of sub square wave / sine"));
subPhaseSlider->setRange (0, 100, 1);
subPhaseSlider->setSliderStyle (Slider::RotaryVerticalDrag);
subPhaseSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
labeSubPhase.reset (new Label ("labeSubPhase",
TRANS("Sub Phase")));
addAndMakeVisible (labeSubPhase.get());
labeSubPhase->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labeSubPhase->setJustificationType (Justification::centred);
labeSubPhase->setEditable (false, false, false);
labeSubPhase->setColour (TextEditor::textColourId, Colours::black);
labeSubPhase->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
squarePhaseSlider.reset (new Slider ("squarePhaseSlider"));
addAndMakeVisible (squarePhaseSlider.get());
squarePhaseSlider->setTooltip (TRANS("Phase of square wave / sine"));
squarePhaseSlider->setRange (0, 100, 1);
squarePhaseSlider->setSliderStyle (Slider::RotaryVerticalDrag);
squarePhaseSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
labeSquarePhase.reset (new Label ("labeSquarePhase",
TRANS("Sqr Phase")));
addAndMakeVisible (labeSquarePhase.get());
labeSquarePhase->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labeSquarePhase->setJustificationType (Justification::centred);
labeSquarePhase->setEditable (false, false, false);
labeSquarePhase->setColour (TextEditor::textColourId, Colours::black);
labeSquarePhase->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
labelNoise.reset (new Label ("labelNoise",
TRANS("Noise")));
addAndMakeVisible (labelNoise.get());
labelNoise->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelNoise->setJustificationType (Justification::centred);
labelNoise->setEditable (false, false, false);
labelNoise->setColour (TextEditor::textColourId, Colours::black);
labelNoise->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
sliderNoise.reset (new Slider ("sliderNoise"));
addAndMakeVisible (sliderNoise.get());
sliderNoise->setTooltip (TRANS("Amount of white noise in output"));
sliderNoise->setRange (0, 100, 1);
sliderNoise->setSliderStyle (Slider::RotaryVerticalDrag);
sliderNoise->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
copyButton.reset (new TextButton ("copyButton"));
addAndMakeVisible (copyButton.get());
copyButton->setTooltip (TRANS("Copy VCO Parameters"));
copyButton->setButtonText (TRANS("C"));
copyButton->addListener (this);
pasteButton.reset (new TextButton ("pasteButton"));
addAndMakeVisible (pasteButton.get());
pasteButton->setTooltip (TRANS("Paste DCO Parameters"));
pasteButton->setButtonText (TRANS("P"));
pasteButton->addListener (this);
pasteButton->setBounds (230, 87, 24, 24);
phaseJitterSlider.reset (new Slider ("vcoJitter"));
addAndMakeVisible (phaseJitterSlider.get());
phaseJitterSlider->setTooltip (TRANS("Jitter amount of VCO phase"));
phaseJitterSlider->setRange (0, 100, 1);
phaseJitterSlider->setSliderStyle (Slider::RotaryVerticalDrag);
phaseJitterSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
labelJitter.reset (new Label ("labelJitter",
TRANS("Jitter")));
addAndMakeVisible (labelJitter.get());
labelJitter->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular").withExtraKerningFactor (-0.035f));
labelJitter->setJustificationType (Justification::centred);
labelJitter->setEditable (false, false, false);
labelJitter->setColour (TextEditor::textColourId, Colours::black);
labelJitter->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
groupLink.reset (new ComboBox ("groupLink"));
addAndMakeVisible (groupLink.get());
groupLink->setTooltip (TRANS("Group to which the VCO of this voice is linked. All voices of a group have the same VCO parameters."));
groupLink->setEditableText (false);
groupLink->setJustificationType (Justification::centred);
groupLink->setTextWhenNothingSelected (String());
groupLink->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
groupLink->addListener (this);
lfoDepth.reset (new Slider ("lfoDepth"));
addAndMakeVisible (lfoDepth.get());
lfoDepth->setTooltip (TRANS("LFO depth. Positive and negative values are in phase opposition."));
lfoDepth->setRange (0, 100, 1);
lfoDepth->setSliderStyle (Slider::RotaryVerticalDrag);
lfoDepth->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
labelDepth.reset (new Label ("labelDepth",
TRANS("PW LFO")));
addAndMakeVisible (labelDepth.get());
labelDepth->setTooltip (TRANS("LFO Depth"));
labelDepth->setFont (Font (15.00f, Font::plain).withTypefaceStyle ("Regular"));
labelDepth->setJustificationType (Justification::centred);
labelDepth->setEditable (false, false, false);
labelDepth->setColour (TextEditor::textColourId, Colours::black);
labelDepth->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
octaveSaw.reset (new ToggleButton ("octaveSaw"));
addAndMakeVisible (octaveSaw.get());
octaveSaw->setTooltip (TRANS("Saw waveform is one octave above others"));
octaveSaw->setButtonText (TRANS("Double saw pitch"));
octaveSaw->setToggleState (true, dontSendNotification);
//[UserPreSize]
//[/UserPreSize]
setSize (600, 600);
//[Constructor] You can add your own custom stuff here..
//[/Constructor]
}
GuiVCO::~GuiVCO()
{
//[Destructor_pre]. You can add your own custom destruction code here..
mAttachment = nullptr;
setLookAndFeel(nullptr);
//[/Destructor_pre]
squareSlider = nullptr;
subSlider = nullptr;
sawSlider = nullptr;
labelSaw = nullptr;
labelSub = nullptr;
labelSquare = nullptr;
labelPWM = nullptr;
labelSine = nullptr;
pwmLFOGroup = nullptr;
labelEven = nullptr;
labelOdd = nullptr;
sineSlider = nullptr;
pwmSlider = nullptr;
sliderHOdd = nullptr;
sliderHEven = nullptr;
sawPhaseSlider = nullptr;
labelSawPhase = nullptr;
subPhaseSlider = nullptr;
labeSubPhase = nullptr;
squarePhaseSlider = nullptr;
labeSquarePhase = nullptr;
labelNoise = nullptr;
sliderNoise = nullptr;
copyButton = nullptr;
pasteButton = nullptr;
phaseJitterSlider = nullptr;
labelJitter = nullptr;
groupLink = nullptr;
lfoDepth = nullptr;
labelDepth = nullptr;
octaveSaw = nullptr;
//[Destructor]. You can add your own custom destruction code here..
//[/Destructor]
}
//==============================================================================
void GuiVCO::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 GuiVCO::resized()
{
//[UserPreResize] Add your own custom resize code here..
//[/UserPreResize]
squareSlider->setBounds (37 - (56 / 2), (151 - (72 / 2)) + 72 / 2 + 83 - (72 / 2), 56, 72);
subSlider->setBounds (90 - (56 / 2), (151 - (72 / 2)) + 72 / 2 - (72 / 2), 56, 72);
sawSlider->setBounds (36 - (56 / 2), 151 - (72 / 2), 56, 72);
labelSaw->setBounds (36 - (48 / 2), 111 - (24 / 2), 48, 24);
labelSub->setBounds (90 - (47 / 2), (111 - (24 / 2)) + 24 / 2 - (24 / 2), 47, 24);
labelSquare->setBounds (36 - (47 / 2), ((111 - (24 / 2)) + 24 / 2 - (24 / 2)) + 24 / 2 + 83 - (24 / 2), 47, 24);
labelPWM->setBounds (90 - (47 / 2), (111 - (24 / 2)) + 24 / 2 + 83 - (24 / 2), 47, 24);
labelSine->setBounds (62 - (47 / 2), 27 - (24 / 2), 47, 24);
labelEven->setBounds (170 - (60 / 2), (27 - (24 / 2)) + 24 / 2 - (24 / 2), 60, 24);
labelOdd->setBounds (116 - (64 / 2), (27 - (24 / 2)) + 24 / 2 - (24 / 2), 64, 24);
sineSlider->setBounds (62 - (56 / 2), 67 - (72 / 2), 56, 72);
pwmSlider->setBounds (91 - (56 / 2), (151 - (72 / 2)) + 72 / 2 + 83 - (72 / 2), 56, 72);
sliderHOdd->setBounds (116 - (56 / 2), (67 - (72 / 2)) + 72 / 2 - (72 / 2), 56, 72);
sliderHEven->setBounds (170 - (56 / 2), (67 - (72 / 2)) + 72 / 2 - (72 / 2), 56, 72);
sawPhaseSlider->setBounds (144 - (56 / 2), 151 - (72 / 2), 56, 72);
labelSawPhase->setBounds (144 - (62 / 2), 111 - (24 / 2), 62, 24);
subPhaseSlider->setBounds (198 - (56 / 2), (151 - (72 / 2)) + 72 / 2 - (72 / 2), 56, 72);
labeSubPhase->setBounds (198 - (58 / 2), (111 - (24 / 2)) + 24 / 2 - (24 / 2), 58, 24);
squarePhaseSlider->setBounds (198 - (56 / 2), 234 - (72 / 2), 56, 72);
labeSquarePhase->setBounds (198 - (54 / 2), 194 - (24 / 2), 54, 24);
labelNoise->setBounds (92 - (48 / 2), 276 - (24 / 2), 48, 24);
sliderNoise->setBounds (92 - (56 / 2), 316 - (72 / 2), 56, 72);
copyButton->setBounds (242 - (24 / 2), 67 - (24 / 2), 24, 24);
phaseJitterSlider->setBounds (144 - (56 / 2), 317 - (72 / 2), 56, 72);
labelJitter->setBounds (144 - (50 / 2), 277 - (24 / 2), 50, 24);
groupLink->setBounds (242 - (29 / 2), 37 - (24 / 2), 29, 24);
lfoDepth->setBounds (144 - (56 / 2), 234 - (72 / 2), 56, 72);
labelDepth->setBounds (144 - (47 / 2), 194 - (24 / 2), 47, 24);
octaveSaw->setBounds (120 - (144 / 2), 352, 144, 24);
//[UserResized] Add your own custom resize handling here..
//[/UserResized]
}
void GuiVCO::buttonClicked (Button* buttonThatWasClicked)
{
//[UserbuttonClicked_Pre]
//[/UserbuttonClicked_Pre]
if (buttonThatWasClicked == copyButton.get())
{
//[UserButtonCode_copyButton] -- add your button handler code here..
copy();
//[/UserButtonCode_copyButton]
}
else if (buttonThatWasClicked == pasteButton.get())
{
//[UserButtonCode_pasteButton] -- add your button handler code here..
paste();
//[/UserButtonCode_pasteButton]
}
//[UserbuttonClicked_Post]
//[/UserbuttonClicked_Post]
}
void GuiVCO::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 GuiVCO::setParameters(VCOParameters * p) {
mVCOParameters = p;
pwmLFOGroup->setParameters(p);
mAttachment = std::make_unique<GuiAttachment>(mVCOParameters->getProcessor());
updateFromParameters();
}
void GuiVCO::updateFromParameters()
{
mAttachment->attachSlider(mVCOParameters->mPWMGain, *squareSlider);
mAttachment->attachSlider(mVCOParameters->mHOddGain, *sliderHOdd);
mAttachment->attachSlider(mVCOParameters->mHEvenGain, *sliderHEven);
mAttachment->attachSlider(mVCOParameters->mSineGain, *sineSlider);
mAttachment->attachSlider(mVCOParameters->mSubGain, *subSlider);
mAttachment->attachSlider(mVCOParameters->mSawGain, *sawSlider);
mAttachment->attachSlider(mVCOParameters->mPWMRate, *pwmSlider);
mAttachment->attachSlider(mVCOParameters->mSawPhase, *sawPhaseSlider);
mAttachment->attachSlider(mVCOParameters->mSubPhase, *subPhaseSlider);
mAttachment->attachSlider(mVCOParameters->mPhaseJitter, *phaseJitterSlider);
mAttachment->attachSlider(mVCOParameters->mPWMPhase, *squarePhaseSlider);
mAttachment->attachSlider(mVCOParameters->mNoiseGain, *sliderNoise);
mAttachment->attachCombobox(mVCOParameters->mLinkGroup, *groupLink);
mAttachment->attachSlider(mVCOParameters->mDepth, *lfoDepth);
mAttachment->attachButton(mVCOParameters->mOctaveSaw, *octaveSaw);
}
void GuiVCO::paste(String prefix) {
mVCOParameters->pasteParameters(prefix);
}
void GuiVCO::copy(String prefix)
{
mVCOParameters->copyParameters(prefix);
}
//[/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="GuiVCO" componentName="GuiVCO"
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="600">
<BACKGROUND backgroundColour="323e44"/>
<SLIDER name="squareSlider" id="69b113a05734c4f5" memberName="squareSlider"
virtualName="" explicitFocusOrder="0" pos="37c 83Cc 56 72" posRelativeY="47970c50792f9c3"
tooltip="Amount of Square wave in output" 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="subSlider" id="33ac3eb074cc8a8c" memberName="subSlider"
virtualName="" explicitFocusOrder="0" pos="90c 0Cc 56 72" posRelativeY="47970c50792f9c3"
tooltip="Amount of Sub Square Wave in Output" 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="SawSlider" id="47970c50792f9c3" memberName="sawSlider"
virtualName="" explicitFocusOrder="0" pos="36c 151c 56 72" tooltip="Amount of sawtooth wave in output"
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="labelSaw" id="d43004658944c0e8" memberName="labelSaw" virtualName=""
explicitFocusOrder="0" pos="36c 111c 48 24" edTextCol="ff000000"
edBkgCol="0" labelText="Saw" editableSingleClick="0" editableDoubleClick="0"
focusDiscardsChanges="0" fontname="Default font" fontsize="15.0"
kerning="0.0" bold="0" italic="0" justification="36"/>
<LABEL name="labelSub" id="247534da6c1de229" memberName="labelSub" virtualName=""
explicitFocusOrder="0" pos="89.5c 0Cc 47 24" posRelativeY="d43004658944c0e8"
edTextCol="ff000000" edBkgCol="0" labelText="Sub" editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<LABEL name="labelSquare" id="f71dffdeb5dfc550" memberName="labelSquare"
virtualName="" explicitFocusOrder="0" pos="36.5c 83Cc 47 24"
posRelativeY="247534da6c1de229" posRelativeW="d43004658944c0e8"
edTextCol="ff000000" edBkgCol="0" labelText="Square" editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<LABEL name="labelPWM" id="8cd2e39e9d5e700d" memberName="labelPWM" virtualName=""
explicitFocusOrder="0" pos="90.5c 83Cc 47 24" posRelativeY="d43004658944c0e8"
edTextCol="ff000000" edBkgCol="0" labelText="Sqr PW" editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<LABEL name="labelSine" id="ddf178a525ed6f14" memberName="labelSine"
virtualName="" explicitFocusOrder="0" pos="61.5c 27c 47 24" edTextCol="ff000000"
edBkgCol="0" labelText="Sine" editableSingleClick="0" editableDoubleClick="0"
focusDiscardsChanges="0" fontname="Default font" fontsize="15.0"
kerning="0.0" bold="0" italic="0" justification="36"/>
<GROUPCOMPONENT name="pwmLFO" id="ac5696b26ebb8135" memberName="pwmLFOGroup"
virtualName="GuiLFO" explicitFocusOrder="0" pos="16 504 238 190"
title="PWM LFO" textpos="33"/>
<LABEL name="labelEven" id="bf5e6eb3bc3c157a" memberName="labelEven"
virtualName="" explicitFocusOrder="0" pos="170c 0Cc 60 24" posRelativeY="ddf178a525ed6f14"
edTextCol="ff000000" edBkgCol="0" labelText="Even h. " editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<LABEL name="labelOdd" id="822d90ee5321fca1" memberName="labelOdd" virtualName=""
explicitFocusOrder="0" pos="116c 0Cc 64 24" posRelativeY="ddf178a525ed6f14"
edTextCol="ff000000" edBkgCol="0" labelText="Odd h." editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<SLIDER name="sineSlider" id="586690c5050f6d69" memberName="sineSlider"
virtualName="" explicitFocusOrder="0" pos="62c 67c 56 72" tooltip="Amount of sine wave in output"
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="pwmSlider" id="b92ffcc696c7e039" memberName="pwmSlider"
virtualName="" explicitFocusOrder="0" pos="91c 83Cc 56 72" posRelativeY="47970c50792f9c3"
tooltip="Pulse width of square wave" 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="sliderHOdd" id="12ff6a2231d4abbe" memberName="sliderHOdd"
virtualName="" explicitFocusOrder="0" pos="116c 0Cc 56 72" posRelativeY="586690c5050f6d69"
tooltip="Amount of Odd harmonics in sine wave" 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="sliderHEven" id="e3697c1e6a3e385a" memberName="sliderHEven"
virtualName="" explicitFocusOrder="0" pos="170c 0Cc 56 72" posRelativeY="586690c5050f6d69"
tooltip="Amont of Even harmonics in sine wave" 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="sawPhaseSlider" id="3599298b01f9055b" memberName="sawPhaseSlider"
virtualName="" explicitFocusOrder="0" pos="144c 151c 56 72" tooltip="Phase of sawtooth wave / sine wave"
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="labelSawPhase" id="701b6d0e518547c0" memberName="labelSawPhase"
virtualName="" explicitFocusOrder="0" pos="144c 111c 62 24" edTextCol="ff000000"
edBkgCol="0" labelText="Saw Phase" editableSingleClick="0" editableDoubleClick="0"
focusDiscardsChanges="0" fontname="Default font" fontsize="15.0"
kerning="0.0" bold="0" italic="0" justification="36"/>
<SLIDER name="subPhaseSlider" id="8a4d51b862faa71d" memberName="subPhaseSlider"
virtualName="" explicitFocusOrder="0" pos="198c 0Cc 56 72" posRelativeY="3599298b01f9055b"
tooltip="Phase of sub square wave / sine" 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="labeSubPhase" id="ebbae9010b4bed6f" memberName="labeSubPhase"
virtualName="" explicitFocusOrder="0" pos="198c 0Cc 58 24" posRelativeY="701b6d0e518547c0"
edTextCol="ff000000" edBkgCol="0" labelText="Sub Phase" editableSingleClick="0"
editableDoubleClick="0" focusDiscardsChanges="0" fontname="Default font"
fontsize="15.0" kerning="0.0" bold="0" italic="0" justification="36"/>
<SLIDER name="squarePhaseSlider" id="a70ef9c6b567c82a" memberName="squarePhaseSlider"
virtualName="" explicitFocusOrder="0" pos="198c 234c 56 72" tooltip="Phase of square wave / sine"
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="labeSquarePhase" id="ebac2443d4ee2eb" memberName="labeSquarePhase"
virtualName="" explicitFocusOrder="0" pos="198c 194c 54 24" edTextCol="ff000000"
edBkgCol="0" labelText="Sqr Phase" editableSingleClick="0" editableDoubleClick="0"
focusDiscardsChanges="0" fontname="Default font" fontsize="15.0"
kerning="0.0" bold="0" italic="0" justification="36"/>
<LABEL name="labelNoise" id="4937cc5f2ccb75e8" memberName="labelNoise"
virtualName="" explicitFocusOrder="0" pos="92c 276c 48 24" edTextCol="ff000000"
edBkgCol="0" labelText="Noise" editableSingleClick="0" editableDoubleClick="0"
focusDiscardsChanges="0" fontname="Default font" fontsize="15.0"
kerning="0.0" bold="0" italic="0" justification="36"/>
<SLIDER name="sliderNoise" id="af1245f5491857d4" memberName="sliderNoise"
virtualName="" explicitFocusOrder="0" pos="92c 316c 56 72" tooltip="Amount of white noise in output"
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="242c 67c 24 24" tooltip="Copy VCO Parameters"
buttonText="C" connectedEdges="0" needsCallback="1" radioGroupId="0"/>
<TEXTBUTTON name="pasteButton" id="4af5e8f91f632b47" memberName="pasteButton"
virtualName="" explicitFocusOrder="0" pos="230 87 24 24" tooltip="Paste DCO Parameters"
buttonText="P" connectedEdges="0" needsCallback="1" radioGroupId="0"/>
<SLIDER name="vcoJitter" id="67ebb6c5e1fdd976" memberName="phaseJitterSlider"
virtualName="" explicitFocusOrder="0" pos="144c 317c 56 72" tooltip="Jitter amount of VCO phase"
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="labelJitter" id="ce9c8aabf19f4959" memberName="labelJitter"
virtualName="" explicitFocusOrder="0" pos="144c 277c 50 24" edTextCol="ff000000"
edBkgCol="0" labelText="Jitter" editableSingleClick="0" editableDoubleClick="0"
focusDiscardsChanges="0" fontname="Default font" fontsize="15.0"
kerning="-0.035" bold="0" italic="0" justification="36"/>
<COMBOBOX name="groupLink" id="2f4c27038f31a098" memberName="groupLink"
virtualName="" explicitFocusOrder="0" pos="242.5c 37c 29 24"
posRelativeY="2bec03bff2a1a6d8" tooltip="Group to which the VCO of this voice is linked. All voices of a group have the same VCO parameters."
editable="0" layout="36" items="" textWhenNonSelected="" textWhenNoItems="(no choices)"/>
<SLIDER name="lfoDepth" id="4d6fc8c39c5814ad" memberName="lfoDepth" virtualName=""
explicitFocusOrder="0" pos="144c 234c 56 72" tooltip="LFO depth. Positive and negative values are in phase opposition."
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="labelDepth" id="95c77e6805cb89d2" memberName="labelDepth"
virtualName="" explicitFocusOrder="0" pos="143.5c 194c 47 24"
tooltip="LFO Depth" edTextCol="ff000000" edBkgCol="0" labelText="PW LFO"
editableSingleClick="0" editableDoubleClick="0" focusDiscardsChanges="0"
fontname="Default font" fontsize="15.0" kerning="0.0" bold="0"
italic="0" justification="36"/>
<TOGGLEBUTTON name="octaveSaw" id="9c6f5128da3eecdd" memberName="octaveSaw"
virtualName="" explicitFocusOrder="0" pos="120c 352 144 24" tooltip="Saw waveform is one octave above others"
buttonText="Double saw pitch" connectedEdges="0" needsCallback="0"
radioGroupId="0" state="1"/>
</JUCER_COMPONENT>
END_JUCER_METADATA
*/
#endif
//[EndFile] You can add extra defines here...
//[/EndFile]