diff --git a/AdlibBlaster.jucer b/AdlibBlaster.jucer
new file mode 100644
index 0000000..d9e999d
--- /dev/null
+++ b/AdlibBlaster.jucer
@@ -0,0 +1,232 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/DROMultiplexer.cpp b/Source/DROMultiplexer.cpp
index 40a6f67..9170a86 100644
--- a/Source/DROMultiplexer.cpp
+++ b/Source/DROMultiplexer.cpp
@@ -1,7 +1,17 @@
#include "DROMultiplexer.h"
-
#include "JuceHeader.h"
-#include
+
+/// Jeff-Russ added guard against windows.h include if not windows:
+#ifdef _WIN32 // covers both 32 and 64-bit
+ #include
+#else
+ #include "windows.h"
+#endif
+
+/// Jeff-Russ added to replace mising itoa for xcode:
+#if __APPLE__
+ #include "itoa.h"
+#endif
// Used by the first recording instance to claim master status
DROMultiplexer* DROMultiplexer::master = NULL;
@@ -185,10 +195,11 @@ void DROMultiplexer::TwoOpMelodicNoteOn(Hiopl* opl, int inCh) {
// find a free channel and mark it as used
char addr[16];
int outCh = _FindFreeChannel(opl, inCh);
+
if (outCh >= 0) {
- _DebugOut(" <- ");
- _DebugOut(itoa((int)opl, addr, 16));
- _DebugOut(" ");
+ //_DebugOut(" <- ");
+ //_DebugOut(itoa((int)opl, addr, 16));
+ //_DebugOut(" ");
for (int i = 0; i < MELODIC_CHANNELS; i++) {
Hiopl* tmpOpl = channels[i].opl;
_DebugOut(NULL == tmpOpl ? "-" : tmpOpl->GetState(channels[i].ch));
diff --git a/Source/InstrumentLoader.h b/Source/InstrumentLoader.h
index 5416298..da34a7c 100644
--- a/Source/InstrumentLoader.h
+++ b/Source/InstrumentLoader.h
@@ -6,6 +6,6 @@
class InstrumentLoader
{
public:
- virtual void loadInstrumentData(int n, const unsigned char* data, JuceOplvstiAudioProcessor *proc) = 0;
+ virtual void loadInstrumentData(int n, const unsigned char* data, AdlibBlasterAudioProcessor *proc) = 0;
virtual String getExtension() = 0;
};
diff --git a/Source/PluginGui.cpp b/Source/PluginGui.cpp
index c497921..f506663 100644
--- a/Source/PluginGui.cpp
+++ b/Source/PluginGui.cpp
@@ -1,2167 +1,2191 @@
-/*
- ==============================================================================
-
- This is an automatically generated GUI class created by the Introjucer!
-
- 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 Introjucer version: 3.1.0
-
- ------------------------------------------------------------------------------
-
- The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions"
- Copyright 2004-13 by Raw Material Software Ltd.
-
- ==============================================================================
-*/
-
-//[Headers] You can add your own extra header files here...
-//[/Headers]
-
-#include "PluginGui.h"
-
-
-//[MiscUserDefs] You can add your own user definitions and misc code here...
-void PluginGui::updateFromParameters()
-{
- emulatorSlider->setValue(processor->getEnumParameter("Emulator"), juce::NotificationType::dontSendNotification);
- setRecordButtonState(processor->isThisInstanceRecording());
-
- sineImageButton->setToggleState(false, false);
- halfsineImageButton->setToggleState(false, false);
- abssineImageButton->setToggleState(false, false);
- quartersineImageButton->setToggleState(false, false);
- alternatingsineImageButton->setToggleState(false, false);
- camelsineImageButton->setToggleState(false, false);
- squareImageButton->setToggleState(false, false);
- logsawImageButton->setToggleState(false, false);
- switch(processor->getEnumParameter("Modulator Wave")) {
- case 0: sineImageButton->setToggleState(true, false); break;
- case 1: halfsineImageButton->setToggleState(true, false); break;
- case 2: abssineImageButton->setToggleState(true, false); break;
- case 3: quartersineImageButton->setToggleState(true, false); break;
- case 4: alternatingsineImageButton->setToggleState(true, false); break;
- case 5: camelsineImageButton->setToggleState(true, false); break;
- case 6: squareImageButton->setToggleState(true, false); break;
- case 7: logsawImageButton->setToggleState(true, false); break;
-
- }
- sineImageButton2->setToggleState(false, false);
- halfsineImageButton2->setToggleState(false, false);
- abssineImageButton2->setToggleState(false, false);
- quartersineImageButton2->setToggleState(false, false);
- alternatingsineImageButton2->setToggleState(false, false);
- camelsineImageButton2->setToggleState(false, false);
- squareImageButton2->setToggleState(false, false);
- logsawImageButton2->setToggleState(false, false);
- switch(processor->getEnumParameter("Carrier Wave")) {
- case 0: sineImageButton2->setToggleState(true, false); break;
- case 1: halfsineImageButton2->setToggleState(true, false); break;
- case 2: abssineImageButton2->setToggleState(true, false); break;
- case 3: quartersineImageButton2->setToggleState(true, false); break;
- case 4: alternatingsineImageButton2->setToggleState(true, false); break;
- case 5: camelsineImageButton2->setToggleState(true, false); break;
- case 6: squareImageButton2->setToggleState(true, false); break;
- case 7: logsawImageButton2->setToggleState(true, false); break;
- }
-
- frequencyComboBox->setSelectedItemIndex(processor->getEnumParameter("Modulator Frequency Multiplier"), true);
- frequencyComboBox2->setSelectedItemIndex(processor->getEnumParameter("Carrier Frequency Multiplier"), true);
-
- attenuationSlider->setValue(processor->getEnumParameter("Modulator Attenuation") * -0.75, juce::NotificationType::dontSendNotification);
- attenuationSlider2->setValue(processor->getEnumParameter("Carrier Attenuation") * -0.75, juce::NotificationType::dontSendNotification);
-
- aSlider->setValue(processor->getIntParameter("Modulator Attack"), juce::NotificationType::dontSendNotification);
- dSlider->setValue(processor->getIntParameter("Modulator Decay"), juce::NotificationType::dontSendNotification);
- sSlider->setValue(processor->getIntParameter("Modulator Sustain Level"), juce::NotificationType::dontSendNotification);
- rSlider->setValue(processor->getIntParameter("Modulator Release"), juce::NotificationType::dontSendNotification);
- aSlider2->setValue(processor->getIntParameter("Carrier Attack"), juce::NotificationType::dontSendNotification);
- dSlider2->setValue(processor->getIntParameter("Carrier Decay"), juce::NotificationType::dontSendNotification);
- sSlider2->setValue(processor->getIntParameter("Carrier Sustain Level"), juce::NotificationType::dontSendNotification);
- rSlider2->setValue(processor->getIntParameter("Carrier Release"), juce::NotificationType::dontSendNotification);
-
- keyscaleAttenuationComboBox->setSelectedItemIndex(processor->getEnumParameter("Modulator Keyscale Level"), true);
- keyscaleAttenuationComboBox2->setSelectedItemIndex(processor->getEnumParameter("Carrier Keyscale Level"), true);
-
-
- if (processor->getEnumParameter("Modulator Tremolo")) tremoloButton->setToggleState(true, false);
- if (processor->getEnumParameter("Modulator Vibrato")) vibratoButton->setToggleState(true, false);
- if (processor->getEnumParameter("Modulator Sustain")) sustainButton->setToggleState(true, false);
- if (processor->getEnumParameter("Modulator Keyscale Rate")) keyscaleEnvButton->setToggleState(true, false);
-
- if (processor->getEnumParameter("Carrier Tremolo")) tremoloButton2->setToggleState(true, false);
- 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, juce::NotificationType::dontSendNotification);
- tremoloSlider->setValue(processor->getEnumParameter("Tremolo Depth") * 3.8 + 1.0, juce::NotificationType::dontSendNotification);
- feedbackSlider->setValue(processor->getIntParameter("Modulator Feedback"), juce::NotificationType::dontSendNotification);
-
- velocityComboBox->setSelectedItemIndex(processor->getEnumParameter("Modulator Velocity Sensitivity"), true);
- velocityComboBox2->setSelectedItemIndex(processor->getEnumParameter("Carrier Velocity Sensitivity"), true);
-
- algorithmComboBox->setSelectedItemIndex(processor->getEnumParameter("Algorithm"), true);
-
- percussionComboBox->setSelectedItemIndex(processor->getEnumParameter("Percussion Mode"), true);
-
- tooltipWindow.setColour(tooltipWindow.backgroundColourId, Colour(0x0));
- tooltipWindow.setColour(tooltipWindow.textColourId, Colour(COLOUR_MID));
-}
-
-void PluginGui::setRecordButtonState(bool recording) {
- if (recording) {
- recordButton->setColour(TextButton::buttonColourId, Colour(COLOUR_RECORDING));
- recordButton->setButtonText("Recording..");
- recordButton->setColour(ToggleButton::textColourId, Colour(COLOUR_RECORDING));
- } else {
- recordButton->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
- recordButton->setButtonText("Record to DRO");
- recordButton->setColour(ToggleButton::textColourId, Colour(COLOUR_MID));
- }
-}
-
-//[/MiscUserDefs]
-
-//==============================================================================
-PluginGui::PluginGui (JuceOplvstiAudioProcessor* ownerFilter)
- : AudioProcessorEditor (ownerFilter)
-{
- addAndMakeVisible (groupComponent = new GroupComponent ("new group",
- TRANS("Modulator")));
- groupComponent->setTextLabelPosition (Justification::centredLeft);
- groupComponent->setColour (GroupComponent::outlineColourId, Colour (0xff007f00));
- groupComponent->setColour (GroupComponent::textColourId, Colour (0xff007f00));
-
- addAndMakeVisible (frequencyComboBox = new ComboBox ("frequency combo box"));
- frequencyComboBox->setEditableText (false);
- frequencyComboBox->setJustificationType (Justification::centredLeft);
- frequencyComboBox->setTextWhenNothingSelected (String::empty);
- frequencyComboBox->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
- frequencyComboBox->addListener (this);
-
- addAndMakeVisible (frequencyLabel = new Label ("frequency label",
- TRANS("Frequency")));
- frequencyLabel->setTooltip (TRANS("Multiplier applied to base note frequency"));
- frequencyLabel->setFont (Font (15.00f, Font::plain));
- frequencyLabel->setJustificationType (Justification::centredLeft);
- frequencyLabel->setEditable (false, false, false);
- frequencyLabel->setColour (Label::textColourId, Colour (0xff007f00));
- frequencyLabel->setColour (TextEditor::textColourId, Colours::black);
- frequencyLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (aSlider = new Slider ("a slider"));
- aSlider->setTooltip (TRANS("Envelope attack rate"));
- aSlider->setRange (0, 15, 1);
- aSlider->setSliderStyle (Slider::LinearVertical);
- aSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
- aSlider->setColour (Slider::thumbColourId, Colour (0xff00af00));
- aSlider->setColour (Slider::trackColourId, Colour (0x7f007f00));
- aSlider->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
- aSlider->setColour (Slider::textBoxBackgroundColourId, Colours::black);
- aSlider->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
- aSlider->addListener (this);
-
- addAndMakeVisible (aLabel = new Label ("a label",
- TRANS("A")));
- aLabel->setTooltip (TRANS("Attack rate"));
- aLabel->setFont (Font (15.00f, Font::plain));
- aLabel->setJustificationType (Justification::centred);
- aLabel->setEditable (false, false, false);
- aLabel->setColour (Label::textColourId, Colour (0xff007f00));
- aLabel->setColour (TextEditor::textColourId, Colours::black);
- aLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (dSlider = new Slider ("d slider"));
- dSlider->setTooltip (TRANS("Envelope decay rate"));
- dSlider->setRange (0, 15, 1);
- dSlider->setSliderStyle (Slider::LinearVertical);
- dSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
- dSlider->setColour (Slider::thumbColourId, Colour (0xff00af00));
- dSlider->setColour (Slider::trackColourId, Colour (0x7f007f00));
- dSlider->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
- dSlider->setColour (Slider::textBoxBackgroundColourId, Colours::black);
- dSlider->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
- dSlider->addListener (this);
-
- addAndMakeVisible (dLabel = new Label ("d label",
- TRANS("D")));
- dLabel->setTooltip (TRANS("Decay rate"));
- dLabel->setFont (Font (15.00f, Font::plain));
- dLabel->setJustificationType (Justification::centred);
- dLabel->setEditable (false, false, false);
- dLabel->setColour (Label::textColourId, Colour (0xff007f00));
- dLabel->setColour (TextEditor::textColourId, Colours::black);
- dLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (sSlider = new Slider ("s slider"));
- sSlider->setTooltip (TRANS("Envelope sustain level"));
- sSlider->setRange (0, 15, 1);
- sSlider->setSliderStyle (Slider::LinearVertical);
- sSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
- sSlider->setColour (Slider::thumbColourId, Colour (0xff00af00));
- sSlider->setColour (Slider::trackColourId, Colour (0x7f007f00));
- sSlider->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
- sSlider->setColour (Slider::textBoxBackgroundColourId, Colours::black);
- sSlider->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
- sSlider->addListener (this);
-
- addAndMakeVisible (dLabel2 = new Label ("d label",
- TRANS("S")));
- dLabel2->setTooltip (TRANS("Sustain level"));
- dLabel2->setFont (Font (15.00f, Font::plain));
- dLabel2->setJustificationType (Justification::centred);
- dLabel2->setEditable (false, false, false);
- dLabel2->setColour (Label::textColourId, Colour (0xff007f00));
- dLabel2->setColour (TextEditor::textColourId, Colours::black);
- dLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (rSlider = new Slider ("r slider"));
- rSlider->setTooltip (TRANS("Envelope release rate"));
- rSlider->setRange (0, 15, 1);
- rSlider->setSliderStyle (Slider::LinearVertical);
- rSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
- rSlider->setColour (Slider::thumbColourId, Colour (0xff00af00));
- rSlider->setColour (Slider::trackColourId, Colour (0x7f007f00));
- rSlider->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
- rSlider->setColour (Slider::textBoxBackgroundColourId, Colours::black);
- rSlider->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
- rSlider->addListener (this);
-
- addAndMakeVisible (rLabel = new Label ("r label",
- TRANS("R")));
- rLabel->setTooltip (TRANS("Release rate"));
- rLabel->setFont (Font (15.00f, Font::plain));
- rLabel->setJustificationType (Justification::centred);
- rLabel->setEditable (false, false, false);
- rLabel->setColour (Label::textColourId, Colour (0xff007f00));
- rLabel->setColour (TextEditor::textColourId, Colours::black);
- rLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (attenuationSlider = new Slider ("attenuation slider"));
- attenuationSlider->setRange (-47.25, 0, 0.75);
- attenuationSlider->setSliderStyle (Slider::LinearVertical);
- attenuationSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 64, 20);
- attenuationSlider->setColour (Slider::thumbColourId, Colour (0xff00af00));
- attenuationSlider->setColour (Slider::trackColourId, Colour (0x7f007f00));
- attenuationSlider->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
- attenuationSlider->setColour (Slider::textBoxBackgroundColourId, Colours::black);
- attenuationSlider->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
- attenuationSlider->addListener (this);
-
- addAndMakeVisible (attenuationLabel = new Label ("attenuation label",
- TRANS("Attenuation")));
- attenuationLabel->setTooltip (TRANS("Final output level adjustment"));
- attenuationLabel->setFont (Font (15.00f, Font::plain));
- attenuationLabel->setJustificationType (Justification::centred);
- attenuationLabel->setEditable (false, false, false);
- attenuationLabel->setColour (Label::textColourId, Colour (0xff007f00));
- attenuationLabel->setColour (TextEditor::textColourId, Colours::black);
- attenuationLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (dbLabel = new Label ("db label",
- TRANS("dB")));
- dbLabel->setFont (Font (15.00f, Font::plain));
- dbLabel->setJustificationType (Justification::centred);
- dbLabel->setEditable (false, false, false);
- dbLabel->setColour (Label::textColourId, Colour (0xff007f00));
- dbLabel->setColour (Label::outlineColourId, Colour (0x00000000));
- dbLabel->setColour (TextEditor::textColourId, Colours::black);
- dbLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (sineImageButton = new ImageButton ("sine image button"));
- sineImageButton->setButtonText (TRANS("Sine"));
- sineImageButton->setRadioGroupId (1);
- sineImageButton->addListener (this);
-
- sineImageButton->setImages (false, true, true,
- ImageCache::getFromMemory (full_sine_png, full_sine_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (halfsineImageButton = new ImageButton ("half sine image button"));
- halfsineImageButton->setButtonText (TRANS("Half Sine"));
- halfsineImageButton->setRadioGroupId (1);
- halfsineImageButton->addListener (this);
-
- halfsineImageButton->setImages (false, true, true,
- ImageCache::getFromMemory (half_sine_png, half_sine_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (abssineImageButton = new ImageButton ("abs sine image button"));
- abssineImageButton->setButtonText (TRANS("Abs Sine"));
- abssineImageButton->setRadioGroupId (1);
- abssineImageButton->addListener (this);
-
- abssineImageButton->setImages (false, true, true,
- ImageCache::getFromMemory (abs_sine_png, abs_sine_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (quartersineImageButton = new ImageButton ("quarter sine image button"));
- quartersineImageButton->setButtonText (TRANS("Quarter Sine"));
- quartersineImageButton->setRadioGroupId (1);
- quartersineImageButton->addListener (this);
-
- quartersineImageButton->setImages (false, true, true,
- ImageCache::getFromMemory (quarter_sine_png, quarter_sine_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (waveLabel = new Label ("wave label",
- TRANS("Wave")));
- waveLabel->setFont (Font (15.00f, Font::plain));
- waveLabel->setJustificationType (Justification::centredLeft);
- waveLabel->setEditable (false, false, false);
- waveLabel->setColour (Label::textColourId, Colour (0xff007f00));
- waveLabel->setColour (TextEditor::textColourId, Colours::black);
- waveLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (tremoloButton = new ToggleButton ("tremolo button"));
- tremoloButton->setButtonText (TRANS("Tremolo"));
- tremoloButton->addListener (this);
- tremoloButton->setColour (ToggleButton::textColourId, Colour (0xff007f00));
-
- addAndMakeVisible (vibratoButton = new ToggleButton ("vibrato button"));
- vibratoButton->setButtonText (TRANS("Vibrato"));
- vibratoButton->addListener (this);
- vibratoButton->setColour (ToggleButton::textColourId, Colour (0xff007f00));
-
- addAndMakeVisible (sustainButton = new ToggleButton ("sustain button"));
- sustainButton->setTooltip (TRANS("Enable or disable sustain when note is held"));
- sustainButton->setButtonText (TRANS("Sustain"));
- sustainButton->addListener (this);
- sustainButton->setColour (ToggleButton::textColourId, Colour (0xff007f00));
-
- addAndMakeVisible (keyscaleEnvButton = new ToggleButton ("keyscale env button"));
- keyscaleEnvButton->setTooltip (TRANS("Speed up envelope rate with note frequency"));
- keyscaleEnvButton->setButtonText (TRANS("Keyscale Envelope Rate"));
- keyscaleEnvButton->addListener (this);
- keyscaleEnvButton->setColour (ToggleButton::textColourId, Colour (0xff007f00));
-
- addAndMakeVisible (frequencyLabel2 = new Label ("frequency label",
- TRANS("Keyscale Attenuation")));
- frequencyLabel2->setTooltip (TRANS("Attenuate amplitude with note frequency"));
- frequencyLabel2->setFont (Font (15.00f, Font::plain));
- frequencyLabel2->setJustificationType (Justification::centred);
- frequencyLabel2->setEditable (false, false, false);
- frequencyLabel2->setColour (Label::textColourId, Colour (0xff007f00));
- frequencyLabel2->setColour (TextEditor::textColourId, Colours::black);
- frequencyLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (dbLabel2 = new Label ("db label",
- TRANS("dB/8ve\n")));
- dbLabel2->setFont (Font (15.00f, Font::plain));
- dbLabel2->setJustificationType (Justification::centred);
- dbLabel2->setEditable (false, false, false);
- dbLabel2->setColour (Label::textColourId, Colour (0xff007f00));
- dbLabel2->setColour (Label::outlineColourId, Colour (0x00000000));
- dbLabel2->setColour (TextEditor::textColourId, Colours::black);
- dbLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (groupComponent2 = new GroupComponent ("new group",
- TRANS("Carrier")));
- groupComponent2->setTextLabelPosition (Justification::centredLeft);
- groupComponent2->setColour (GroupComponent::outlineColourId, Colour (0xff007f00));
- groupComponent2->setColour (GroupComponent::textColourId, Colour (0xff007f00));
-
- addAndMakeVisible (frequencyComboBox2 = new ComboBox ("frequency combo box"));
- frequencyComboBox2->setEditableText (false);
- frequencyComboBox2->setJustificationType (Justification::centredLeft);
- frequencyComboBox2->setTextWhenNothingSelected (String::empty);
- frequencyComboBox2->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
- frequencyComboBox2->addListener (this);
-
- addAndMakeVisible (frequencyLabel3 = new Label ("frequency label",
- TRANS("Frequency")));
- frequencyLabel3->setTooltip (TRANS("Multiplier applied to base note frequency"));
- frequencyLabel3->setFont (Font (15.00f, Font::plain));
- frequencyLabel3->setJustificationType (Justification::centredLeft);
- frequencyLabel3->setEditable (false, false, false);
- frequencyLabel3->setColour (Label::textColourId, Colour (0xff007f00));
- frequencyLabel3->setColour (TextEditor::textColourId, Colours::black);
- frequencyLabel3->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (aSlider2 = new Slider ("a slider"));
- aSlider2->setRange (0, 15, 1);
- aSlider2->setSliderStyle (Slider::LinearVertical);
- aSlider2->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
- aSlider2->setColour (Slider::thumbColourId, Colour (0xff00af00));
- aSlider2->setColour (Slider::trackColourId, Colour (0x7f007f00));
- aSlider2->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
- aSlider2->setColour (Slider::textBoxBackgroundColourId, Colours::black);
- aSlider2->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
- aSlider2->addListener (this);
-
- addAndMakeVisible (aLabel2 = new Label ("a label",
- TRANS("A")));
- aLabel2->setTooltip (TRANS("Attack rate"));
- aLabel2->setFont (Font (15.00f, Font::plain));
- aLabel2->setJustificationType (Justification::centred);
- aLabel2->setEditable (false, false, false);
- aLabel2->setColour (Label::textColourId, Colour (0xff007f00));
- aLabel2->setColour (TextEditor::textColourId, Colours::black);
- aLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (dSlider2 = new Slider ("d slider"));
- dSlider2->setRange (0, 15, 1);
- dSlider2->setSliderStyle (Slider::LinearVertical);
- dSlider2->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
- dSlider2->setColour (Slider::thumbColourId, Colour (0xff00af00));
- dSlider2->setColour (Slider::trackColourId, Colour (0x7f007f00));
- dSlider2->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
- dSlider2->setColour (Slider::textBoxBackgroundColourId, Colours::black);
- dSlider2->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
- dSlider2->addListener (this);
-
- addAndMakeVisible (dLabel3 = new Label ("d label",
- TRANS("D")));
- dLabel3->setTooltip (TRANS("Decay rate"));
- dLabel3->setFont (Font (15.00f, Font::plain));
- dLabel3->setJustificationType (Justification::centred);
- dLabel3->setEditable (false, false, false);
- dLabel3->setColour (Label::textColourId, Colour (0xff007f00));
- dLabel3->setColour (TextEditor::textColourId, Colours::black);
- dLabel3->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (sSlider2 = new Slider ("s slider"));
- sSlider2->setRange (0, 15, 1);
- sSlider2->setSliderStyle (Slider::LinearVertical);
- sSlider2->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
- sSlider2->setColour (Slider::thumbColourId, Colour (0xff00af00));
- sSlider2->setColour (Slider::trackColourId, Colour (0x7f007f00));
- sSlider2->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
- sSlider2->setColour (Slider::textBoxBackgroundColourId, Colours::black);
- sSlider2->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
- sSlider2->addListener (this);
-
- addAndMakeVisible (dLabel4 = new Label ("d label",
- TRANS("S")));
- dLabel4->setTooltip (TRANS("Sustain level"));
- dLabel4->setFont (Font (15.00f, Font::plain));
- dLabel4->setJustificationType (Justification::centred);
- dLabel4->setEditable (false, false, false);
- dLabel4->setColour (Label::textColourId, Colour (0xff007f00));
- dLabel4->setColour (TextEditor::textColourId, Colours::black);
- dLabel4->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (rSlider2 = new Slider ("r slider"));
- rSlider2->setRange (0, 15, 1);
- rSlider2->setSliderStyle (Slider::LinearVertical);
- rSlider2->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
- rSlider2->setColour (Slider::thumbColourId, Colour (0xff00af00));
- rSlider2->setColour (Slider::trackColourId, Colour (0x7f007f00));
- rSlider2->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
- rSlider2->setColour (Slider::textBoxBackgroundColourId, Colours::black);
- rSlider2->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
- rSlider2->addListener (this);
-
- addAndMakeVisible (rLabel2 = new Label ("r label",
- TRANS("R")));
- rLabel2->setTooltip (TRANS("Release rate"));
- rLabel2->setFont (Font (15.00f, Font::plain));
- rLabel2->setJustificationType (Justification::centred);
- rLabel2->setEditable (false, false, false);
- rLabel2->setColour (Label::textColourId, Colour (0xff007f00));
- rLabel2->setColour (TextEditor::textColourId, Colours::black);
- rLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (attenuationSlider2 = new Slider ("attenuation slider"));
- attenuationSlider2->setRange (-47.25, 0, 0.75);
- attenuationSlider2->setSliderStyle (Slider::LinearVertical);
- attenuationSlider2->setTextBoxStyle (Slider::TextBoxBelow, false, 64, 20);
- attenuationSlider2->setColour (Slider::thumbColourId, Colour (0xff00af00));
- attenuationSlider2->setColour (Slider::trackColourId, Colour (0x7f007f00));
- attenuationSlider2->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
- attenuationSlider2->setColour (Slider::textBoxBackgroundColourId, Colours::black);
- attenuationSlider2->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
- attenuationSlider2->addListener (this);
-
- addAndMakeVisible (attenuationLabel2 = new Label ("attenuation label",
- TRANS("Attenuation")));
- attenuationLabel2->setTooltip (TRANS("Final output level adjustment"));
- attenuationLabel2->setFont (Font (15.00f, Font::plain));
- attenuationLabel2->setJustificationType (Justification::centred);
- attenuationLabel2->setEditable (false, false, false);
- attenuationLabel2->setColour (Label::textColourId, Colour (0xff007f00));
- attenuationLabel2->setColour (TextEditor::textColourId, Colours::black);
- attenuationLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (dbLabel3 = new Label ("db label",
- TRANS("dB")));
- dbLabel3->setFont (Font (15.00f, Font::plain));
- dbLabel3->setJustificationType (Justification::centred);
- dbLabel3->setEditable (false, false, false);
- dbLabel3->setColour (Label::textColourId, Colour (0xff007f00));
- dbLabel3->setColour (Label::outlineColourId, Colour (0x00000000));
- dbLabel3->setColour (TextEditor::textColourId, Colours::black);
- dbLabel3->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (sineImageButton2 = new ImageButton ("sine image button"));
- sineImageButton2->setButtonText (TRANS("Sine"));
- sineImageButton2->setRadioGroupId (2);
- sineImageButton2->addListener (this);
-
- sineImageButton2->setImages (false, true, true,
- ImageCache::getFromMemory (full_sine_png, full_sine_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (halfsineImageButton2 = new ImageButton ("half sine image button"));
- halfsineImageButton2->setButtonText (TRANS("Half Sine"));
- halfsineImageButton2->setRadioGroupId (2);
- halfsineImageButton2->addListener (this);
-
- halfsineImageButton2->setImages (false, true, true,
- ImageCache::getFromMemory (half_sine_png, half_sine_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (abssineImageButton2 = new ImageButton ("abs sine image button"));
- abssineImageButton2->setButtonText (TRANS("Abs Sine"));
- abssineImageButton2->setRadioGroupId (2);
- abssineImageButton2->addListener (this);
-
- abssineImageButton2->setImages (false, true, true,
- ImageCache::getFromMemory (abs_sine_png, abs_sine_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (quartersineImageButton2 = new ImageButton ("quarter sine image button"));
- quartersineImageButton2->setButtonText (TRANS("Quarter Sine"));
- quartersineImageButton2->setRadioGroupId (2);
- quartersineImageButton2->addListener (this);
-
- quartersineImageButton2->setImages (false, true, true,
- ImageCache::getFromMemory (quarter_sine_png, quarter_sine_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (waveLabel2 = new Label ("wave label",
- TRANS("Wave")));
- waveLabel2->setFont (Font (15.00f, Font::plain));
- waveLabel2->setJustificationType (Justification::centredLeft);
- waveLabel2->setEditable (false, false, false);
- waveLabel2->setColour (Label::textColourId, Colour (0xff007f00));
- waveLabel2->setColour (TextEditor::textColourId, Colours::black);
- waveLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (tremoloButton2 = new ToggleButton ("tremolo button"));
- tremoloButton2->setButtonText (TRANS("Tremolo"));
- tremoloButton2->addListener (this);
- tremoloButton2->setColour (ToggleButton::textColourId, Colour (0xff007f00));
-
- addAndMakeVisible (vibratoButton2 = new ToggleButton ("vibrato button"));
- vibratoButton2->setButtonText (TRANS("Vibrato"));
- vibratoButton2->addListener (this);
- vibratoButton2->setColour (ToggleButton::textColourId, Colour (0xff007f00));
-
- addAndMakeVisible (sustainButton2 = new ToggleButton ("sustain button"));
- sustainButton2->setTooltip (TRANS("Enable or disable sustain when note is held"));
- sustainButton2->setButtonText (TRANS("Sustain"));
- sustainButton2->addListener (this);
- sustainButton2->setColour (ToggleButton::textColourId, Colour (0xff007f00));
-
- addAndMakeVisible (keyscaleEnvButton2 = new ToggleButton ("keyscale env button"));
- keyscaleEnvButton2->setTooltip (TRANS("Speed up envelope rate with note frequency"));
- keyscaleEnvButton2->setButtonText (TRANS("Keyscale Envelope Rate"));
- keyscaleEnvButton2->addListener (this);
- keyscaleEnvButton2->setColour (ToggleButton::textColourId, Colour (0xff007f00));
-
- addAndMakeVisible (frequencyLabel4 = new Label ("frequency label",
- TRANS("Keyscale Attenuation")));
- frequencyLabel4->setTooltip (TRANS("Attenuate amplitude with note frequency"));
- frequencyLabel4->setFont (Font (15.00f, Font::plain));
- frequencyLabel4->setJustificationType (Justification::centred);
- frequencyLabel4->setEditable (false, false, false);
- frequencyLabel4->setColour (Label::textColourId, Colour (0xff007f00));
- frequencyLabel4->setColour (TextEditor::textColourId, Colours::black);
- frequencyLabel4->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (groupComponent3 = new GroupComponent ("new group",
- TRANS("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",
- TRANS("Tremolo Depth\n")));
- frequencyLabel5->setTooltip (TRANS("OPL global tremolo depth"));
- frequencyLabel5->setFont (Font (15.00f, Font::plain));
- frequencyLabel5->setJustificationType (Justification::centredLeft);
- 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",
- TRANS("dB")));
- dbLabel5->setFont (Font (15.00f, Font::plain));
- dbLabel5->setJustificationType (Justification::centredLeft);
- 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",
- TRANS("Vibrato Depth")));
- frequencyLabel6->setTooltip (TRANS("OPL global vibrato depth"));
- frequencyLabel6->setFont (Font (15.00f, Font::plain));
- frequencyLabel6->setJustificationType (Justification::centredLeft);
- 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",
- TRANS("cents\n")));
- dbLabel6->setTooltip (TRANS("A unit of pitch; 100 cents per semitone"));
- dbLabel6->setFont (Font (15.00f, Font::plain));
- dbLabel6->setJustificationType (Justification::centredLeft);
- 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",
- TRANS("Feedback")));
- frequencyLabel7->setTooltip (TRANS("Extent to which modulator output is fed back into itself"));
- 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));
-
- addAndMakeVisible (velocityComboBox = new ComboBox ("velocity combo box"));
- velocityComboBox->setEditableText (false);
- velocityComboBox->setJustificationType (Justification::centredLeft);
- velocityComboBox->setTextWhenNothingSelected (String::empty);
- velocityComboBox->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
- velocityComboBox->addItem (TRANS("Off"), 1);
- velocityComboBox->addItem (TRANS("Light"), 2);
- velocityComboBox->addItem (TRANS("Heavy"), 3);
- velocityComboBox->addListener (this);
-
- addAndMakeVisible (attenuationLabel3 = new Label ("attenuation label",
- TRANS("Velocity")));
- attenuationLabel3->setTooltip (TRANS("Set or disable velocity senstivity"));
- attenuationLabel3->setFont (Font (15.00f, Font::plain));
- attenuationLabel3->setJustificationType (Justification::centredLeft);
- attenuationLabel3->setEditable (false, false, false);
- attenuationLabel3->setColour (Label::textColourId, Colour (0xff007f00));
- attenuationLabel3->setColour (TextEditor::textColourId, Colours::black);
- attenuationLabel3->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (velocityComboBox2 = new ComboBox ("velocity combo box"));
- velocityComboBox2->setEditableText (false);
- velocityComboBox2->setJustificationType (Justification::centredLeft);
- velocityComboBox2->setTextWhenNothingSelected (String::empty);
- velocityComboBox2->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
- velocityComboBox2->addItem (TRANS("Off"), 1);
- velocityComboBox2->addItem (TRANS("Light"), 2);
- velocityComboBox2->addItem (TRANS("Heavy"), 3);
- velocityComboBox2->addListener (this);
-
- addAndMakeVisible (attenuationLabel4 = new Label ("attenuation label",
- TRANS("Velocity")));
- attenuationLabel4->setTooltip (TRANS("Set or disable velocity senstivity"));
- attenuationLabel4->setFont (Font (15.00f, Font::plain));
- attenuationLabel4->setJustificationType (Justification::centredLeft);
- attenuationLabel4->setEditable (false, false, false);
- attenuationLabel4->setColour (Label::textColourId, Colour (0xff007f00));
- attenuationLabel4->setColour (TextEditor::textColourId, Colours::black);
- attenuationLabel4->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (alternatingsineImageButton = new ImageButton ("alternating sine image button"));
- alternatingsineImageButton->setButtonText (TRANS("Alternating Sine"));
- alternatingsineImageButton->setRadioGroupId (1);
- alternatingsineImageButton->addListener (this);
-
- alternatingsineImageButton->setImages (false, true, true,
- ImageCache::getFromMemory (alternating_sine_png, alternating_sine_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (camelsineImageButton = new ImageButton ("camel sine image button"));
- camelsineImageButton->setButtonText (TRANS("Camel Sine"));
- camelsineImageButton->setRadioGroupId (1);
- camelsineImageButton->addListener (this);
-
- camelsineImageButton->setImages (false, true, true,
- ImageCache::getFromMemory (camel_sine_png, camel_sine_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (squareImageButton = new ImageButton ("square image button"));
- squareImageButton->setButtonText (TRANS("Square"));
- squareImageButton->setRadioGroupId (1);
- squareImageButton->addListener (this);
-
- squareImageButton->setImages (false, true, true,
- ImageCache::getFromMemory (square_png, square_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (logsawImageButton = new ImageButton ("logsaw image button"));
- logsawImageButton->setButtonText (TRANS("Logarithmic Sawtooth"));
- logsawImageButton->setRadioGroupId (1);
- logsawImageButton->addListener (this);
-
- logsawImageButton->setImages (false, true, true,
- ImageCache::getFromMemory (logarithmic_saw_png, logarithmic_saw_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (alternatingsineImageButton2 = new ImageButton ("alternating sine image button"));
- alternatingsineImageButton2->setButtonText (TRANS("Alternating Sine"));
- alternatingsineImageButton2->setRadioGroupId (2);
- alternatingsineImageButton2->addListener (this);
-
- alternatingsineImageButton2->setImages (false, true, true,
- ImageCache::getFromMemory (alternating_sine_png, alternating_sine_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (camelsineImageButton2 = new ImageButton ("camel sine image button"));
- camelsineImageButton2->setButtonText (TRANS("Camel Sine"));
- camelsineImageButton2->setRadioGroupId (2);
- camelsineImageButton2->addListener (this);
-
- camelsineImageButton2->setImages (false, true, true,
- ImageCache::getFromMemory (camel_sine_png, camel_sine_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (squareImageButton2 = new ImageButton ("square image button"));
- squareImageButton2->setButtonText (TRANS("Square"));
- squareImageButton2->setRadioGroupId (2);
- squareImageButton2->addListener (this);
-
- squareImageButton2->setImages (false, true, true,
- ImageCache::getFromMemory (square_png, square_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (logsawImageButton2 = new ImageButton ("logsaw image button"));
- logsawImageButton2->setButtonText (TRANS("Logarithmic Sawtooth"));
- logsawImageButton2->setRadioGroupId (2);
- logsawImageButton2->addListener (this);
-
- logsawImageButton2->setImages (false, true, true,
- ImageCache::getFromMemory (logarithmic_saw_png, logarithmic_saw_pngSize), 0.500f, Colour (0x00000000),
- Image(), 0.500f, Colour (0x00000000),
- Image(), 1.000f, Colour (0x00000000));
- addAndMakeVisible (algorithmComboBox = new ComboBox ("algorithm combo box"));
- algorithmComboBox->setEditableText (false);
- algorithmComboBox->setJustificationType (Justification::centredLeft);
- algorithmComboBox->setTextWhenNothingSelected (String::empty);
- algorithmComboBox->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
- algorithmComboBox->addItem (TRANS("FM"), 1);
- algorithmComboBox->addItem (TRANS("Additive"), 2);
- algorithmComboBox->addListener (this);
-
- addAndMakeVisible (frequencyLabel8 = new Label ("frequency label",
- TRANS("Algorithm")));
- frequencyLabel8->setTooltip (TRANS("In additive mode, carrier and modulator output are simply summed rather than modulated"));
- frequencyLabel8->setFont (Font (15.00f, Font::plain));
- frequencyLabel8->setJustificationType (Justification::centredLeft);
- frequencyLabel8->setEditable (false, false, false);
- frequencyLabel8->setColour (Label::textColourId, Colour (0xff007f00));
- frequencyLabel8->setColour (TextEditor::textColourId, Colours::black);
- frequencyLabel8->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (dbLabel4 = new Label ("db label",
- TRANS("dB/8ve\n")));
- dbLabel4->setFont (Font (15.00f, Font::plain));
- dbLabel4->setJustificationType (Justification::centred);
- dbLabel4->setEditable (false, false, false);
- dbLabel4->setColour (Label::textColourId, Colour (0xff007f00));
- dbLabel4->setColour (Label::outlineColourId, Colour (0x00000000));
- dbLabel4->setColour (TextEditor::textColourId, Colours::black);
- dbLabel4->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (keyscaleAttenuationComboBox2 = new ComboBox ("keyscale combo box"));
- keyscaleAttenuationComboBox2->setEditableText (false);
- keyscaleAttenuationComboBox2->setJustificationType (Justification::centredLeft);
- keyscaleAttenuationComboBox2->setTextWhenNothingSelected (String::empty);
- keyscaleAttenuationComboBox2->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
- keyscaleAttenuationComboBox2->addItem (TRANS("-0.0"), 1);
- keyscaleAttenuationComboBox2->addItem (TRANS("-3.0"), 2);
- keyscaleAttenuationComboBox2->addItem (TRANS("-1.5"), 3);
- keyscaleAttenuationComboBox2->addItem (TRANS("-6.0"), 4);
- keyscaleAttenuationComboBox2->addListener (this);
-
- addAndMakeVisible (keyscaleAttenuationComboBox = new ComboBox ("keyscale combo box"));
- keyscaleAttenuationComboBox->setEditableText (false);
- keyscaleAttenuationComboBox->setJustificationType (Justification::centredLeft);
- keyscaleAttenuationComboBox->setTextWhenNothingSelected (String::empty);
- keyscaleAttenuationComboBox->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
- keyscaleAttenuationComboBox->addItem (TRANS("-0.0"), 1);
- keyscaleAttenuationComboBox->addItem (TRANS("-3.0"), 2);
- keyscaleAttenuationComboBox->addItem (TRANS("-1.5"), 3);
- keyscaleAttenuationComboBox->addItem (TRANS("-6.0"), 4);
- keyscaleAttenuationComboBox->addListener (this);
-
- addAndMakeVisible (groupComponent4 = new GroupComponent ("new group",
- TRANS("Channels")));
- groupComponent4->setTextLabelPosition (Justification::centredLeft);
- groupComponent4->setColour (GroupComponent::outlineColourId, Colour (0xff007f00));
- groupComponent4->setColour (GroupComponent::textColourId, Colour (0xff007f00));
-
- addAndMakeVisible (groupComponent5 = new GroupComponent ("new group",
- TRANS("Emulator")));
- groupComponent5->setTextLabelPosition (Justification::centredLeft);
- groupComponent5->setColour (GroupComponent::outlineColourId, Colour (0xff007f00));
- groupComponent5->setColour (GroupComponent::textColourId, Colour (0xff007f00));
-
- addAndMakeVisible (emulatorSlider = new Slider ("emulator slider"));
- emulatorSlider->setRange (0, 1, 1);
- emulatorSlider->setSliderStyle (Slider::LinearHorizontal);
- emulatorSlider->setTextBoxStyle (Slider::NoTextBox, true, 44, 20);
- emulatorSlider->setColour (Slider::thumbColourId, Colour (0xff00af00));
- emulatorSlider->setColour (Slider::trackColourId, Colour (0x7f007f00));
- emulatorSlider->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
- emulatorSlider->setColour (Slider::textBoxBackgroundColourId, Colours::black);
- emulatorSlider->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
- emulatorSlider->addListener (this);
-
- addAndMakeVisible (emulatorLabel = new Label ("emulator label",
- TRANS("DOSBox")));
- emulatorLabel->setTooltip (TRANS("Use the OPL emulator from the DOSBox project"));
- emulatorLabel->setFont (Font (15.00f, Font::plain));
- emulatorLabel->setJustificationType (Justification::centredRight);
- emulatorLabel->setEditable (false, false, false);
- emulatorLabel->setColour (Label::textColourId, Colour (0xff007f00));
- emulatorLabel->setColour (TextEditor::textColourId, Colours::black);
- emulatorLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (emulatorLabel2 = new Label ("emulator label",
- TRANS("ZDoom")));
- emulatorLabel2->setTooltip (TRANS("Use the OPL emulator from the ZDoom project"));
- emulatorLabel2->setFont (Font (15.00f, Font::plain));
- emulatorLabel2->setJustificationType (Justification::centredLeft);
- emulatorLabel2->setEditable (false, false, false);
- emulatorLabel2->setColour (Label::textColourId, Colour (0xff007f00));
- emulatorLabel2->setColour (TextEditor::textColourId, Colours::black);
- emulatorLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
- addAndMakeVisible (recordButton = new ToggleButton ("record button"));
- recordButton->setTooltip (TRANS("Start recording all register writes to a DRO file - an OPL recording file format defined by DOSBox"));
- recordButton->setButtonText (TRANS("Record to DRO"));
- recordButton->addListener (this);
- recordButton->setColour (ToggleButton::textColourId, Colour (0xff007f00));
-
- addAndMakeVisible (percussionComboBox = new ComboBox ("percussion combo box"));
- percussionComboBox->setEditableText (false);
- percussionComboBox->setJustificationType (Justification::centredLeft);
- percussionComboBox->setTextWhenNothingSelected (String::empty);
- percussionComboBox->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
- percussionComboBox->addItem (TRANS("Off"), 1);
- percussionComboBox->addItem (TRANS("Bass drum"), 2);
- percussionComboBox->addItem (TRANS("Snare"), 3);
- percussionComboBox->addItem (TRANS("Tom"), 4);
- percussionComboBox->addItem (TRANS("Cymbal"), 5);
- percussionComboBox->addItem (TRANS("Hi-hat"), 6);
- percussionComboBox->addListener (this);
-
- addAndMakeVisible (percussionLabel = new Label ("percussion label",
- TRANS("Percussion mode")));
- percussionLabel->setTooltip (TRANS("Enable percussion instruments instead of oscillators"));
- percussionLabel->setFont (Font (15.00f, Font::plain));
- percussionLabel->setJustificationType (Justification::centredLeft);
- percussionLabel->setEditable (false, false, false);
- percussionLabel->setColour (Label::textColourId, Colour (0xff007f00));
- percussionLabel->setColour (TextEditor::textColourId, Colours::black);
- percussionLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
-
-
- //[UserPreSize]
- frequencyComboBox->setColour (ComboBox::textColourId, Colour (COLOUR_MID));
- frequencyComboBox->setColour (ComboBox::outlineColourId, Colour (COLOUR_MID));
- frequencyComboBox->setColour (ComboBox::arrowColourId, Colour (COLOUR_MID));
- frequencyComboBox->setColour (ComboBox::buttonColourId, Colours::black);
- frequencyComboBox->setColour (ComboBox::backgroundColourId, Colours::black);
-
- frequencyComboBox->addItem ("x1/2", 16); // can't use 0 :(
- frequencyComboBox->addItem ("x1", 1);
- frequencyComboBox->addItem ("x2", 2);
- frequencyComboBox->addItem ("x3", 3);
- frequencyComboBox->addItem ("x4", 4);
- frequencyComboBox->addItem ("x5", 5);
- frequencyComboBox->addItem ("x6", 6);
- frequencyComboBox->addItem ("x7", 7);
- frequencyComboBox->addItem ("x8", 8);
- frequencyComboBox->addItem ("x9", 9);
- frequencyComboBox->addItem ("x10", 10);
- frequencyComboBox->addItem ("x12", 12);
- frequencyComboBox->addItem ("x15", 15);
-
- frequencyComboBox2->setColour (ComboBox::textColourId, Colour (COLOUR_MID));
- frequencyComboBox2->setColour (ComboBox::outlineColourId, Colour (COLOUR_MID));
- frequencyComboBox2->setColour (ComboBox::arrowColourId, Colour (COLOUR_MID));
- frequencyComboBox2->setColour (ComboBox::buttonColourId, Colours::black);
- frequencyComboBox2->setColour (ComboBox::backgroundColourId, Colours::black);
- frequencyComboBox2->addItem ("x1/2", 16); // can't use 0 :(
- frequencyComboBox2->addItem ("x1", 1);
- frequencyComboBox2->addItem ("x2", 2);
- frequencyComboBox2->addItem ("x3", 3);
- frequencyComboBox2->addItem ("x4", 4);
- frequencyComboBox2->addItem ("x5", 5);
- frequencyComboBox2->addItem ("x6", 6);
- frequencyComboBox2->addItem ("x7", 7);
- frequencyComboBox2->addItem ("x8", 8);
- frequencyComboBox2->addItem ("x9", 9);
- frequencyComboBox2->addItem ("x10", 10);
- frequencyComboBox2->addItem ("x12", 12);
- frequencyComboBox2->addItem ("x15", 15);
-
- velocityComboBox->setColour (ComboBox::textColourId, Colour (COLOUR_MID));
- velocityComboBox->setColour (ComboBox::outlineColourId, Colour (COLOUR_MID));
- velocityComboBox->setColour (ComboBox::arrowColourId, Colour (COLOUR_MID));
- velocityComboBox->setColour (ComboBox::buttonColourId, Colours::black);
- velocityComboBox->setColour (ComboBox::backgroundColourId, Colours::black);
- velocityComboBox2->setColour (ComboBox::textColourId, Colour (COLOUR_MID));
- velocityComboBox2->setColour (ComboBox::outlineColourId, Colour (COLOUR_MID));
- velocityComboBox2->setColour (ComboBox::arrowColourId, Colour (COLOUR_MID));
- velocityComboBox2->setColour (ComboBox::buttonColourId, Colours::black);
- velocityComboBox2->setColour (ComboBox::backgroundColourId, Colours::black);
-
- algorithmComboBox->setColour (ComboBox::textColourId, Colour (COLOUR_MID));
- algorithmComboBox->setColour (ComboBox::outlineColourId, Colour (COLOUR_MID));
- algorithmComboBox->setColour (ComboBox::arrowColourId, Colour (COLOUR_MID));
- algorithmComboBox->setColour (ComboBox::buttonColourId, Colours::black);
- algorithmComboBox->setColour (ComboBox::backgroundColourId, Colours::black);
-
- keyscaleAttenuationComboBox->setColour (ComboBox::textColourId, Colour (COLOUR_MID));
- keyscaleAttenuationComboBox->setColour (ComboBox::outlineColourId, Colour (COLOUR_MID));
- keyscaleAttenuationComboBox->setColour (ComboBox::arrowColourId, Colour (COLOUR_MID));
- keyscaleAttenuationComboBox->setColour (ComboBox::buttonColourId, Colours::black);
- keyscaleAttenuationComboBox->setColour (ComboBox::backgroundColourId, Colours::black);
- keyscaleAttenuationComboBox2->setColour (ComboBox::textColourId, Colour (COLOUR_MID));
- keyscaleAttenuationComboBox2->setColour (ComboBox::outlineColourId, Colour (COLOUR_MID));
- keyscaleAttenuationComboBox2->setColour (ComboBox::arrowColourId, Colour (COLOUR_MID));
- keyscaleAttenuationComboBox2->setColour (ComboBox::buttonColourId, Colours::black);
- keyscaleAttenuationComboBox2->setColour (ComboBox::backgroundColourId, Colours::black);
-
- percussionComboBox->setColour(ComboBox::textColourId, Colour(COLOUR_MID));
- percussionComboBox->setColour(ComboBox::outlineColourId, Colour(COLOUR_MID));
- percussionComboBox->setColour(ComboBox::arrowColourId, Colour(COLOUR_MID));
- percussionComboBox->setColour(ComboBox::buttonColourId, Colours::black);
- percussionComboBox->setColour(ComboBox::backgroundColourId, Colours::black);
-
- sineImageButton->setClickingTogglesState(true);
- sineImageButton->setRepaintsOnMouseActivity(false);
- abssineImageButton->setClickingTogglesState(true);
- abssineImageButton->setRepaintsOnMouseActivity(false);
- halfsineImageButton->setClickingTogglesState(true);
- halfsineImageButton->setRepaintsOnMouseActivity(false);
- quartersineImageButton->setClickingTogglesState(true);
- quartersineImageButton->setRepaintsOnMouseActivity(false);
- alternatingsineImageButton->setClickingTogglesState(true);
- alternatingsineImageButton->setRepaintsOnMouseActivity(false);
- camelsineImageButton->setClickingTogglesState(true);
- camelsineImageButton->setRepaintsOnMouseActivity(false);
- squareImageButton->setClickingTogglesState(true);
- squareImageButton->setRepaintsOnMouseActivity(false);
- logsawImageButton->setClickingTogglesState(true);
- logsawImageButton->setRepaintsOnMouseActivity(false);
-
- sineImageButton2->setClickingTogglesState(true);
- sineImageButton2->setRepaintsOnMouseActivity(false);
- abssineImageButton2->setClickingTogglesState(true);
- abssineImageButton2->setRepaintsOnMouseActivity(false);
- halfsineImageButton2->setClickingTogglesState(true);
- halfsineImageButton2->setRepaintsOnMouseActivity(false);
- quartersineImageButton2->setClickingTogglesState(true);
- quartersineImageButton2->setRepaintsOnMouseActivity(false);
- alternatingsineImageButton2->setClickingTogglesState(true);
- alternatingsineImageButton2->setRepaintsOnMouseActivity(false);
- camelsineImageButton2->setClickingTogglesState(true);
- camelsineImageButton2->setRepaintsOnMouseActivity(false);
- squareImageButton2->setClickingTogglesState(true);
- squareImageButton2->setRepaintsOnMouseActivity(false);
- logsawImageButton2->setClickingTogglesState(true);
- logsawImageButton2->setRepaintsOnMouseActivity(false);
-
- recordButton->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
- tremoloButton->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
- vibratoButton->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
- keyscaleEnvButton->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
- sustainButton->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
- tremoloButton2->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
- vibratoButton2->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
- keyscaleEnvButton2->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
- sustainButton2->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
-
- Font fw(Font::getDefaultMonospacedFontName(), 14, Font::bold);
- for (unsigned int i = 0; i < channels.size(); ++i)
- {
- Label *channel = new Label("chan label", TRANS("-"));
- channel->setColour(Label::textColourId, Colour(COLOUR_MID));
- channel->setJustificationType(Justification::centred);
- addAndMakeVisible(channel);
- channels[i] = channel;
- }
- //[/UserPreSize]
-
- setSize (860, 550);
-
-
- //[Constructor] You can add your own custom stuff here..
- processor = ownerFilter;
- startTimer(1000/30);
- //[/Constructor]
-}
-
-PluginGui::~PluginGui()
-{
- //[Destructor_pre]. You can add your own custom destruction code here..
- //[/Destructor_pre]
-
- groupComponent = nullptr;
- frequencyComboBox = nullptr;
- frequencyLabel = nullptr;
- aSlider = nullptr;
- aLabel = nullptr;
- dSlider = nullptr;
- dLabel = nullptr;
- sSlider = nullptr;
- dLabel2 = nullptr;
- rSlider = nullptr;
- rLabel = nullptr;
- attenuationSlider = nullptr;
- attenuationLabel = nullptr;
- dbLabel = nullptr;
- sineImageButton = nullptr;
- halfsineImageButton = nullptr;
- abssineImageButton = nullptr;
- quartersineImageButton = nullptr;
- waveLabel = nullptr;
- tremoloButton = nullptr;
- vibratoButton = nullptr;
- sustainButton = nullptr;
- keyscaleEnvButton = nullptr;
- frequencyLabel2 = nullptr;
- dbLabel2 = nullptr;
- groupComponent2 = nullptr;
- frequencyComboBox2 = nullptr;
- frequencyLabel3 = nullptr;
- aSlider2 = nullptr;
- aLabel2 = nullptr;
- dSlider2 = nullptr;
- dLabel3 = nullptr;
- sSlider2 = nullptr;
- dLabel4 = nullptr;
- rSlider2 = nullptr;
- rLabel2 = nullptr;
- attenuationSlider2 = nullptr;
- attenuationLabel2 = nullptr;
- dbLabel3 = nullptr;
- sineImageButton2 = nullptr;
- halfsineImageButton2 = nullptr;
- abssineImageButton2 = nullptr;
- quartersineImageButton2 = nullptr;
- waveLabel2 = nullptr;
- tremoloButton2 = nullptr;
- vibratoButton2 = nullptr;
- sustainButton2 = nullptr;
- keyscaleEnvButton2 = nullptr;
- frequencyLabel4 = nullptr;
- groupComponent3 = nullptr;
- tremoloSlider = nullptr;
- frequencyLabel5 = nullptr;
- dbLabel5 = nullptr;
- vibratoSlider = nullptr;
- frequencyLabel6 = nullptr;
- dbLabel6 = nullptr;
- feedbackSlider = nullptr;
- frequencyLabel7 = nullptr;
- velocityComboBox = nullptr;
- attenuationLabel3 = nullptr;
- velocityComboBox2 = nullptr;
- attenuationLabel4 = nullptr;
- alternatingsineImageButton = nullptr;
- camelsineImageButton = nullptr;
- squareImageButton = nullptr;
- logsawImageButton = nullptr;
- alternatingsineImageButton2 = nullptr;
- camelsineImageButton2 = nullptr;
- squareImageButton2 = nullptr;
- logsawImageButton2 = nullptr;
- algorithmComboBox = nullptr;
- frequencyLabel8 = nullptr;
- dbLabel4 = nullptr;
- keyscaleAttenuationComboBox2 = nullptr;
- keyscaleAttenuationComboBox = nullptr;
- groupComponent4 = nullptr;
- groupComponent5 = nullptr;
- emulatorSlider = nullptr;
- emulatorLabel = nullptr;
- emulatorLabel2 = nullptr;
- recordButton = nullptr;
- percussionComboBox = nullptr;
- percussionLabel = nullptr;
-
-
- //[Destructor]. You can add your own custom destruction code here..
- //[/Destructor]
-}
-
-//==============================================================================
-void PluginGui::paint (Graphics& g)
-{
- //[UserPrePaint] Add your own custom painting code here..
- //[/UserPrePaint]
-
- g.fillAll (Colours::black);
-
- //[UserPaint] Add your own custom painting code here..
- //[/UserPaint]
-}
-
-void PluginGui::resized()
-{
- //[UserPreResize] Add your own custom resize code here..
- //[/UserPreResize]
-
- groupComponent->setBounds (16, 80, 408, 344);
- frequencyComboBox->setBounds (128, 152, 72, 24);
- frequencyLabel->setBounds (32, 152, 80, 24);
- aSlider->setBounds (40, 280, 48, 72);
- aLabel->setBounds (40, 352, 48, 24);
- dSlider->setBounds (104, 280, 48, 72);
- dLabel->setBounds (104, 352, 48, 24);
- sSlider->setBounds (168, 280, 48, 72);
- dLabel2->setBounds (168, 352, 48, 24);
- rSlider->setBounds (232, 280, 48, 72);
- rLabel->setBounds (232, 352, 48, 24);
- attenuationSlider->setBounds (312, 280, 72, 96);
- attenuationLabel->setBounds (312, 384, 96, 24);
- dbLabel->setBounds (376, 352, 40, 24);
- sineImageButton->setBounds (88, 112, 34, 30);
- halfsineImageButton->setBounds (128, 112, 34, 30);
- abssineImageButton->setBounds (168, 112, 34, 30);
- quartersineImageButton->setBounds (208, 112, 34, 30);
- waveLabel->setBounds (32, 112, 48, 24);
- tremoloButton->setBounds (144, 192, 96, 24);
- vibratoButton->setBounds (40, 192, 96, 24);
- sustainButton->setBounds (40, 384, 96, 24);
- keyscaleEnvButton->setBounds (128, 384, 184, 24);
- frequencyLabel2->setBounds (248, 184, 152, 24);
- dbLabel2->setBounds (336, 156, 72, 16);
- groupComponent2->setBounds (440, 80, 408, 344);
- frequencyComboBox2->setBounds (552, 152, 72, 24);
- frequencyLabel3->setBounds (456, 152, 80, 24);
- aSlider2->setBounds (464, 280, 48, 72);
- aLabel2->setBounds (464, 352, 48, 24);
- dSlider2->setBounds (528, 280, 48, 72);
- dLabel3->setBounds (528, 352, 48, 24);
- sSlider2->setBounds (592, 280, 48, 72);
- dLabel4->setBounds (592, 352, 48, 24);
- rSlider2->setBounds (656, 280, 48, 72);
- rLabel2->setBounds (656, 352, 48, 24);
- attenuationSlider2->setBounds (736, 280, 72, 96);
- attenuationLabel2->setBounds (736, 384, 96, 24);
- dbLabel3->setBounds (800, 352, 40, 24);
- sineImageButton2->setBounds (512, 112, 34, 30);
- halfsineImageButton2->setBounds (552, 112, 34, 30);
- abssineImageButton2->setBounds (592, 112, 34, 30);
- quartersineImageButton2->setBounds (632, 112, 34, 30);
- waveLabel2->setBounds (456, 112, 48, 24);
- tremoloButton2->setBounds (576, 192, 96, 24);
- vibratoButton2->setBounds (464, 192, 96, 24);
- sustainButton2->setBounds (464, 384, 96, 24);
- keyscaleEnvButton2->setBounds (552, 384, 184, 24);
- frequencyLabel4->setBounds (672, 184, 152, 24);
- groupComponent3->setBounds (16, 432, 832, 96);
- tremoloSlider->setBounds (632, 456, 112, 24);
- frequencyLabel5->setBounds (472, 456, 152, 24);
- dbLabel5->setBounds (752, 448, 40, 40);
- vibratoSlider->setBounds (632, 488, 112, 24);
- frequencyLabel6->setBounds (472, 488, 152, 24);
- dbLabel6->setBounds (752, 480, 47, 40);
- feedbackSlider->setBounds (112, 232, 136, 24);
- frequencyLabel7->setBounds (32, 232, 80, 24);
- velocityComboBox->setBounds (336, 232, 72, 24);
- attenuationLabel3->setBounds (272, 232, 64, 24);
- velocityComboBox2->setBounds (760, 232, 72, 24);
- attenuationLabel4->setBounds (696, 232, 64, 24);
- alternatingsineImageButton->setBounds (288, 112, 34, 30);
- camelsineImageButton->setBounds (248, 112, 34, 30);
- squareImageButton->setBounds (328, 112, 34, 30);
- logsawImageButton->setBounds (368, 112, 34, 30);
- alternatingsineImageButton2->setBounds (714, 113, 34, 30);
- camelsineImageButton2->setBounds (674, 113, 34, 30);
- squareImageButton2->setBounds (754, 113, 34, 30);
- logsawImageButton2->setBounds (794, 113, 34, 30);
- algorithmComboBox->setBounds (552, 232, 112, 24);
- frequencyLabel8->setBounds (456, 232, 80, 24);
- dbLabel4->setBounds (760, 156, 72, 16);
- keyscaleAttenuationComboBox2->setBounds (688, 152, 72, 24);
- keyscaleAttenuationComboBox->setBounds (264, 152, 72, 24);
- groupComponent4->setBounds (440, 8, 408, 64);
- groupComponent5->setBounds (16, 8, 408, 64);
- emulatorSlider->setBounds (200, 32, 40, 24);
- emulatorLabel->setBounds (112, 32, 72, 24);
- emulatorLabel2->setBounds (248, 32, 72, 24);
- recordButton->setBounds (40, 456, 128, 24);
- percussionComboBox->setBounds (256, 488, 112, 24);
- percussionLabel->setBounds (40, 488, 163, 24);
- //[UserResized] Add your own custom resize handling here..
- for (unsigned int i = 0; i < channels.size(); ++i)
- channels[i]->setBounds(456+44*i+4, 36, 20, 20);
- //[/UserResized]
-}
-
-void PluginGui::comboBoxChanged (ComboBox* comboBoxThatHasChanged)
-{
- //[UsercomboBoxChanged_Pre]
-
- //[/UsercomboBoxChanged_Pre]
-
- if (comboBoxThatHasChanged == frequencyComboBox)
- {
- //[UserComboBoxCode_frequencyComboBox] -- add your combo box handling code here..
- int id = comboBoxThatHasChanged->getSelectedId();
- if (id > 15) id = 0;
- processor->setEnumParameter("Modulator Frequency Multiplier", id);
- //[/UserComboBoxCode_frequencyComboBox]
- }
- else if (comboBoxThatHasChanged == frequencyComboBox2)
- {
- //[UserComboBoxCode_frequencyComboBox2] -- add your combo box handling code here..
- int id = comboBoxThatHasChanged->getSelectedId();
- if (id > 15) id = 0;
- processor->setEnumParameter("Carrier Frequency Multiplier", id);
- //[/UserComboBoxCode_frequencyComboBox2]
- }
- else if (comboBoxThatHasChanged == velocityComboBox)
- {
- //[UserComboBoxCode_velocityComboBox] -- add your combo box handling code here..
- int id = comboBoxThatHasChanged->getSelectedId() - 1;
- processor->setEnumParameter("Modulator Velocity Sensitivity", id);
- //[/UserComboBoxCode_velocityComboBox]
- }
- else if (comboBoxThatHasChanged == velocityComboBox2)
- {
- //[UserComboBoxCode_velocityComboBox2] -- add your combo box handling code here..
- int id = comboBoxThatHasChanged->getSelectedId() - 1;
- processor->setEnumParameter("Carrier Velocity Sensitivity", id);
- //[/UserComboBoxCode_velocityComboBox2]
- }
- else if (comboBoxThatHasChanged == algorithmComboBox)
- {
- //[UserComboBoxCode_algorithmComboBox] -- add your combo box handling code here..
- int id = comboBoxThatHasChanged->getSelectedId() - 1;
- processor->setEnumParameter("Algorithm", id);
- //[/UserComboBoxCode_algorithmComboBox]
- }
- else if (comboBoxThatHasChanged == keyscaleAttenuationComboBox2)
- {
- //[UserComboBoxCode_keyscaleAttenuationComboBox2] -- add your combo box handling code here..
- int id = comboBoxThatHasChanged->getSelectedId() - 1;
- processor->setEnumParameter("Carrier Keyscale Level", id);
- //[/UserComboBoxCode_keyscaleAttenuationComboBox2]
- }
- else if (comboBoxThatHasChanged == keyscaleAttenuationComboBox)
- {
- //[UserComboBoxCode_keyscaleAttenuationComboBox] -- add your combo box handling code here..
- int id = comboBoxThatHasChanged->getSelectedId() - 1;
- processor->setEnumParameter("Modulator Keyscale Level", id);
- //[/UserComboBoxCode_keyscaleAttenuationComboBox]
- }
- else if (comboBoxThatHasChanged == percussionComboBox)
- {
- //[UserComboBoxCode_percussionComboBox] -- add your combo box handling code here..
- int id = comboBoxThatHasChanged->getSelectedId() - 1;
- processor->setEnumParameter("Percussion Mode", id);
- //[/UserComboBoxCode_percussionComboBox]
- }
-
- //[UsercomboBoxChanged_Post]
- //[/UsercomboBoxChanged_Post]
-}
-
-void PluginGui::sliderValueChanged (Slider* sliderThatWasMoved)
-{
- //[UsersliderValueChanged_Pre]
- //[/UsersliderValueChanged_Pre]
-
- if (sliderThatWasMoved == aSlider)
- {
- //[UserSliderCode_aSlider] -- add your slider handling code here..
- processor->setIntParameter("Modulator Attack", (int)sliderThatWasMoved->getValue());
- //[/UserSliderCode_aSlider]
- }
- else if (sliderThatWasMoved == dSlider)
- {
- //[UserSliderCode_dSlider] -- add your slider handling code here..
- processor->setIntParameter("Modulator Decay", (int)sliderThatWasMoved->getValue());
- //[/UserSliderCode_dSlider]
- }
- else if (sliderThatWasMoved == sSlider)
- {
- //[UserSliderCode_sSlider] -- add your slider handling code here..
- processor->setIntParameter("Modulator Sustain Level", (int)sliderThatWasMoved->getValue());
- //[/UserSliderCode_sSlider]
- }
- else if (sliderThatWasMoved == rSlider)
- {
- //[UserSliderCode_rSlider] -- add your slider handling code here..
- processor->setIntParameter("Modulator Release", (int)sliderThatWasMoved->getValue());
- //[/UserSliderCode_rSlider]
- }
- else if (sliderThatWasMoved == attenuationSlider)
- {
- //[UserSliderCode_attenuationSlider] -- add your slider handling code here..
- processor->setEnumParameter("Modulator Attenuation", -(int)(sliderThatWasMoved->getValue()/0.75));
- //[/UserSliderCode_attenuationSlider]
- }
- else if (sliderThatWasMoved == aSlider2)
- {
- //[UserSliderCode_aSlider2] -- add your slider handling code here..
- processor->setIntParameter("Carrier Attack", (int)sliderThatWasMoved->getValue());
- //[/UserSliderCode_aSlider2]
- }
- else if (sliderThatWasMoved == dSlider2)
- {
- //[UserSliderCode_dSlider2] -- add your slider handling code here..
- processor->setIntParameter("Carrier Decay", (int)sliderThatWasMoved->getValue());
- //[/UserSliderCode_dSlider2]
- }
- else if (sliderThatWasMoved == sSlider2)
- {
- //[UserSliderCode_sSlider2] -- add your slider handling code here..
- processor->setIntParameter("Carrier Sustain Level", (int)sliderThatWasMoved->getValue());
- //[/UserSliderCode_sSlider2]
- }
- else if (sliderThatWasMoved == rSlider2)
- {
- //[UserSliderCode_rSlider2] -- add your slider handling code here..
- processor->setIntParameter("Carrier Release", (int)sliderThatWasMoved->getValue());
- //[/UserSliderCode_rSlider2]
- }
- else if (sliderThatWasMoved == attenuationSlider2)
- {
- //[UserSliderCode_attenuationSlider2] -- add your slider handling code here..
- processor->setEnumParameter("Carrier Attenuation", -(int)(sliderThatWasMoved->getValue()/0.75));
- //[/UserSliderCode_attenuationSlider2]
- }
- 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]
- }
- else if (sliderThatWasMoved == emulatorSlider)
- {
- //[UserSliderCode_emulatorSlider] -- add your slider handling code here..
- processor->setEnumParameter("Emulator", sliderThatWasMoved->getValue() < 0.5 ? 0 : 1);
- //[/UserSliderCode_emulatorSlider]
- }
-
- //[UsersliderValueChanged_Post]
- //[/UsersliderValueChanged_Post]
-}
-
-void PluginGui::buttonClicked (Button* buttonThatWasClicked)
-{
- //[UserbuttonClicked_Pre]
- //[/UserbuttonClicked_Pre]
-
- if (buttonThatWasClicked == sineImageButton)
- {
- //[UserButtonCode_sineImageButton] -- add your button handler code here..
- processor->setEnumParameter("Modulator Wave", 0);
- //[/UserButtonCode_sineImageButton]
- }
- else if (buttonThatWasClicked == halfsineImageButton)
- {
- //[UserButtonCode_halfsineImageButton] -- add your button handler code here..
- processor->setEnumParameter("Modulator Wave", 1);
- //[/UserButtonCode_halfsineImageButton]
- }
- else if (buttonThatWasClicked == abssineImageButton)
- {
- //[UserButtonCode_abssineImageButton] -- add your button handler code here..
- processor->setEnumParameter("Modulator Wave", 2);
- //[/UserButtonCode_abssineImageButton]
- }
- else if (buttonThatWasClicked == quartersineImageButton)
- {
- //[UserButtonCode_quartersineImageButton] -- add your button handler code here..
- processor->setEnumParameter("Modulator Wave", 3);
- //[/UserButtonCode_quartersineImageButton]
- }
- else if (buttonThatWasClicked == tremoloButton)
- {
- //[UserButtonCode_tremoloButton] -- add your button handler code here..
- processor->setEnumParameter("Modulator Tremolo", buttonThatWasClicked->getToggleState() ? 1 : 0);
- //[/UserButtonCode_tremoloButton]
- }
- else if (buttonThatWasClicked == vibratoButton)
- {
- //[UserButtonCode_vibratoButton] -- add your button handler code here..
- processor->setEnumParameter("Modulator Vibrato", buttonThatWasClicked->getToggleState() ? 1 : 0);
- //[/UserButtonCode_vibratoButton]
- }
- else if (buttonThatWasClicked == sustainButton)
- {
- //[UserButtonCode_sustainButton] -- add your button handler code here..
- processor->setEnumParameter("Modulator Sustain", buttonThatWasClicked->getToggleState() ? 1 : 0);
- //[/UserButtonCode_sustainButton]
- }
- else if (buttonThatWasClicked == keyscaleEnvButton)
- {
- //[UserButtonCode_keyscaleEnvButton] -- add your button handler code here..
- processor->setEnumParameter("Modulator Keyscale Rate", buttonThatWasClicked->getToggleState() ? 1 : 0);
- //[/UserButtonCode_keyscaleEnvButton]
- }
- else if (buttonThatWasClicked == sineImageButton2)
- {
- //[UserButtonCode_sineImageButton2] -- add your button handler code here..
- processor->setEnumParameter("Carrier Wave", 0);
- //[/UserButtonCode_sineImageButton2]
- }
- else if (buttonThatWasClicked == halfsineImageButton2)
- {
- //[UserButtonCode_halfsineImageButton2] -- add your button handler code here..
- processor->setEnumParameter("Carrier Wave", 1);
- //[/UserButtonCode_halfsineImageButton2]
- }
- else if (buttonThatWasClicked == abssineImageButton2)
- {
- //[UserButtonCode_abssineImageButton2] -- add your button handler code here..
- processor->setEnumParameter("Carrier Wave", 2);
- //[/UserButtonCode_abssineImageButton2]
- }
- else if (buttonThatWasClicked == quartersineImageButton2)
- {
- //[UserButtonCode_quartersineImageButton2] -- add your button handler code here..
- processor->setEnumParameter("Carrier Wave", 3);
- //[/UserButtonCode_quartersineImageButton2]
- }
- else if (buttonThatWasClicked == tremoloButton2)
- {
- //[UserButtonCode_tremoloButton2] -- add your button handler code here..
- processor->setEnumParameter("Carrier Tremolo", buttonThatWasClicked->getToggleState() ? 1 : 0);
- //[/UserButtonCode_tremoloButton2]
- }
- else if (buttonThatWasClicked == vibratoButton2)
- {
- //[UserButtonCode_vibratoButton2] -- add your button handler code here..
- processor->setEnumParameter("Carrier Vibrato", buttonThatWasClicked->getToggleState() ? 1 : 0);
- //[/UserButtonCode_vibratoButton2]
- }
- else if (buttonThatWasClicked == sustainButton2)
- {
- //[UserButtonCode_sustainButton2] -- add your button handler code here..
- processor->setEnumParameter("Carrier Sustain", buttonThatWasClicked->getToggleState() ? 1 : 0);
- //[/UserButtonCode_sustainButton2]
- }
- else if (buttonThatWasClicked == keyscaleEnvButton2)
- {
- //[UserButtonCode_keyscaleEnvButton2] -- add your button handler code here..
- processor->setEnumParameter("Carrier Keyscale Rate", buttonThatWasClicked->getToggleState() ? 1 : 0);
- //[/UserButtonCode_keyscaleEnvButton2]
- }
- else if (buttonThatWasClicked == alternatingsineImageButton)
- {
- //[UserButtonCode_alternatingsineImageButton] -- add your button handler code here..
- processor->setEnumParameter("Modulator Wave", 4);
- //[/UserButtonCode_alternatingsineImageButton]
- }
- else if (buttonThatWasClicked == camelsineImageButton)
- {
- //[UserButtonCode_camelsineImageButton] -- add your button handler code here..
- processor->setEnumParameter("Modulator Wave", 5);
- //[/UserButtonCode_camelsineImageButton]
- }
- else if (buttonThatWasClicked == squareImageButton)
- {
- //[UserButtonCode_squareImageButton] -- add your button handler code here..
- processor->setEnumParameter("Modulator Wave", 6);
- //[/UserButtonCode_squareImageButton]
- }
- else if (buttonThatWasClicked == logsawImageButton)
- {
- //[UserButtonCode_logsawImageButton] -- add your button handler code here..
- processor->setEnumParameter("Modulator Wave", 7);
- //[/UserButtonCode_logsawImageButton]
- }
- else if (buttonThatWasClicked == alternatingsineImageButton2)
- {
- //[UserButtonCode_alternatingsineImageButton2] -- add your button handler code here..
- processor->setEnumParameter("Carrier Wave", 4);
- //[/UserButtonCode_alternatingsineImageButton2]
- }
- else if (buttonThatWasClicked == camelsineImageButton2)
- {
- //[UserButtonCode_camelsineImageButton2] -- add your button handler code here..
- processor->setEnumParameter("Carrier Wave", 5);
- //[/UserButtonCode_camelsineImageButton2]
- }
- else if (buttonThatWasClicked == squareImageButton2)
- {
- //[UserButtonCode_squareImageButton2] -- add your button handler code here..
- processor->setEnumParameter("Carrier Wave", 6);
- //[/UserButtonCode_squareImageButton2]
- }
- else if (buttonThatWasClicked == logsawImageButton2)
- {
- //[UserButtonCode_logsawImageButton2] -- add your button handler code here..
- processor->setEnumParameter("Carrier Wave", 7);
- //[/UserButtonCode_logsawImageButton2]
- }
- else if (buttonThatWasClicked == recordButton)
- {
- //[UserButtonCode_recordButton] -- add your button handler code here..
- recordButton->setToggleState(false, false);
- if (!processor->isAnyInstanceRecording()) {
- WildcardFileFilter wildcardFilter ("*.dro", String::empty, "DRO files");
- FileBrowserComponent browser (FileBrowserComponent::saveMode,
- File::nonexistent,
- &wildcardFilter,
- nullptr);
- FileChooserDialogBox dialogBox ("Record to",
- "Specify DRO output file",
- browser,
- true,
- Colours::darkgreen);
- if (dialogBox.show())
- {
- File selectedFile = browser.getSelectedFile(0);
- processor->startRecording(&selectedFile);
- setRecordButtonState(true);
- }
- } else {
- setRecordButtonState(false);
- processor->stopRecording();
- }
- //[/UserButtonCode_recordButton]
- }
-
- //[UserbuttonClicked_Post]
- //[/UserbuttonClicked_Post]
-}
-
-
-
-//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
- //==============================================================================
- // These methods implement the FileDragAndDropTarget interface, and allow our component
- // to accept drag-and-drop of files..
-
- bool PluginGui::isInterestedInFileDrag (const StringArray& files)
- {
- return 1 == files.size() && (
- files[0].toLowerCase().endsWith(".sbi")
- || files[0].toLowerCase().endsWith(".sb2")
- || files[0].toLowerCase().endsWith(".sb0")
- );
- }
-
- void PluginGui::fileDragEnter (const StringArray& files, int x, int y)
- {
- }
-
- void PluginGui::fileDragMove (const StringArray& files, int x, int y)
- {
- }
-
- void PluginGui::fileDragExit (const StringArray& files)
- {
- }
-
- void PluginGui::filesDropped (const StringArray& files, int x, int y)
- {
- if (isInterestedInFileDrag(files)) {
- processor->loadInstrumentFromFile(files[0]);
- }
- }
-
- void PluginGui::timerCallback()
- {
- for (int i = 0; i < Hiopl::CHANNELS; ++i) {
- channels[i]->setText(processor->getChannelEnvelopeStage(i + 1), NotificationType::dontSendNotification);
- }
- //channels[i]->setState(processor->isChannelActive(i+1) ? Button::buttonDown : Button::buttonNormal);
- }
-//[/MiscUserCode]
-
-
-//==============================================================================
-#if 0
-/* -- Introjucer information section --
-
- This is where the Introjucer stores the metadata that describe this GUI layout, so
- make changes in here at your peril!
-
-BEGIN_JUCER_METADATA
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-END_JUCER_METADATA
-*/
-#endif
-
-//==============================================================================
-// Binary resources - be careful not to edit any of these sections!
-
-// JUCER_RESOURCE: full_sine_png, 203, "../img/full_sine.png"
-static const unsigned char resource_PluginGui_full_sine_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,146,73,68,65,84,88,133,237,151,81,14,64,
-48,16,68,183,226,94,110,225,18,110,230,146,252,116,35,153,166,97,219,21,131,125,63,66,144,241,76,75,147,136,108,66,192,240,116,0,101,60,61,99,133,253,249,158,32,47,48,162,38,208,64,237,120,39,52,70,146,
-224,168,185,250,196,206,102,104,140,68,16,228,232,72,235,59,119,234,10,141,145,8,130,148,51,235,212,120,39,235,117,75,222,230,110,209,24,41,103,86,43,78,163,141,198,72,4,65,250,59,162,116,126,181,105,
-140,68,16,196,175,35,74,227,191,238,135,141,40,198,245,208,15,140,24,161,49,178,3,63,99,23,114,126,178,233,88,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
-
-const char* PluginGui::full_sine_png = (const char*) resource_PluginGui_full_sine_png;
-const int PluginGui::full_sine_pngSize = 203;
-
-// JUCER_RESOURCE: half_sine_png, 179, "../img/half_sine.png"
-static const unsigned char resource_PluginGui_half_sine_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,122,73,68,65,84,88,133,237,148,65,10,128,
-32,20,5,191,209,189,186,69,135,236,22,157,172,22,33,193,72,20,102,248,130,55,155,40,50,198,73,77,17,177,133,0,67,111,129,204,120,251,198,130,251,249,27,145,31,20,201,37,88,224,234,249,75,100,138,164,224,
-174,121,58,227,198,101,100,138,88,132,156,107,164,246,159,55,90,43,50,69,44,66,202,147,117,170,252,82,237,184,245,184,200,20,41,79,214,78,200,20,177,8,177,8,177,8,177,8,177,8,177,8,217,1,254,115,12,122,
-78,109,41,249,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
-
-const char* PluginGui::half_sine_png = (const char*) resource_PluginGui_half_sine_png;
-const int PluginGui::half_sine_pngSize = 179;
-
-// JUCER_RESOURCE: abs_sine_png, 181, "../img/abs_sine.png"
-static const unsigned char resource_PluginGui_abs_sine_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,124,73,68,65,84,88,133,237,148,81,10,128,
-32,16,5,215,232,94,221,162,67,118,201,250,81,130,17,209,182,192,13,222,252,21,62,153,125,150,201,204,78,11,192,50,91,160,176,118,87,28,120,222,7,119,126,152,251,65,35,101,34,78,210,122,255,50,23,166,145,
-100,252,107,122,19,183,214,121,115,153,48,141,72,132,220,223,200,232,25,147,143,114,97,26,145,8,169,111,214,205,185,147,55,151,9,211,72,125,179,78,34,76,35,18,33,18,33,18,33,18,33,18,33,18,33,23,197,62,
-17,185,230,123,254,103,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
-
-const char* PluginGui::abs_sine_png = (const char*) resource_PluginGui_abs_sine_png;
-const int PluginGui::abs_sine_pngSize = 181;
-
-// JUCER_RESOURCE: quarter_sine_png, 181, "../img/quarter_sine.png"
-static const unsigned char resource_PluginGui_quarter_sine_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,124,73,68,65,84,88,133,237,150,81,10,
-128,32,16,68,215,232,94,221,162,67,118,139,78,150,31,41,209,196,162,174,31,205,199,60,8,177,28,120,77,33,38,51,187,140,128,229,111,129,74,91,228,40,215,40,131,57,154,70,86,247,73,164,133,137,28,113,35,
-245,141,118,152,183,136,230,10,52,141,72,4,121,254,17,252,198,189,68,115,0,77,35,18,65,190,251,200,230,172,244,238,207,230,206,123,160,105,36,153,206,35,111,36,130,72,4,145,8,34,17,68,34,136,68,144,12,
-123,138,13,78,65,207,81,74,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
-
-const char* PluginGui::quarter_sine_png = (const char*) resource_PluginGui_quarter_sine_png;
-const int PluginGui::quarter_sine_pngSize = 181;
-
-// JUCER_RESOURCE: camel_sine_png, 174, "../img/camel_sine.png"
-static const unsigned char resource_PluginGui_camel_sine_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,117,73,68,65,84,88,133,237,148,209,9,192,
-32,12,68,99,233,94,221,162,67,118,139,78,86,63,218,80,56,41,129,40,245,62,238,129,136,6,225,229,132,20,51,187,140,128,101,182,128,243,45,114,60,43,91,31,38,242,51,107,115,227,93,238,201,115,18,154,68,
-36,130,20,243,57,18,253,117,111,61,128,38,17,137,32,18,65,218,201,186,5,47,122,235,200,121,111,52,137,188,115,100,50,52,137,72,4,145,8,34,17,68,34,136,68,16,137,32,21,146,46,14,97,109,79,27,36,0,0,0,0,
-73,69,78,68,174,66,96,130,0,0};
-
-const char* PluginGui::camel_sine_png = (const char*) resource_PluginGui_camel_sine_png;
-const int PluginGui::camel_sine_pngSize = 174;
-
-// JUCER_RESOURCE: alternating_sine_png, 197, "../img/alternating_sine.png"
-static const unsigned char resource_PluginGui_alternating_sine_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,140,73,68,65,84,88,133,99,100,96,
-96,248,207,48,8,0,211,64,59,0,6,112,59,100,21,20,15,184,67,232,12,88,48,68,96,161,16,134,131,79,35,48,104,66,100,212,33,232,128,145,1,86,142,16,74,11,52,78,43,131,38,68,70,29,130,14,70,29,130,14,48,75,
-86,123,2,58,112,201,103,67,233,169,36,186,224,32,132,26,52,33,130,40,71,8,1,26,151,51,131,38,68,70,29,130,14,70,29,130,14,136,207,53,48,64,163,22,220,160,9,145,81,135,160,3,210,211,8,12,80,185,197,54,
-12,66,132,202,96,208,132,8,0,67,200,18,200,95,246,147,104,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
-
-const char* PluginGui::alternating_sine_png = (const char*) resource_PluginGui_alternating_sine_png;
-const int PluginGui::alternating_sine_pngSize = 197;
-
-// JUCER_RESOURCE: square_png, 179, "../img/square.png"
-static const unsigned char resource_PluginGui_square_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,122,73,68,65,84,88,133,237,150,177,17,128,48,
-12,3,29,142,189,216,130,37,216,44,75,66,99,83,40,85,34,238,80,161,111,146,198,190,143,10,59,45,34,238,16,96,251,91,160,216,223,91,39,59,157,92,185,96,34,197,236,203,216,36,19,153,68,44,130,88,4,177,8,
-98,17,100,156,172,199,98,167,217,186,43,207,156,228,50,137,180,96,255,35,181,107,86,119,148,90,34,22,65,44,130,88,4,177,8,50,238,154,85,200,223,188,76,34,252,174,249,8,153,68,30,246,154,9,40,60,195,35,
-102,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
-
-const char* PluginGui::square_png = (const char*) resource_PluginGui_square_png;
-const int PluginGui::square_pngSize = 179;
-
-// JUCER_RESOURCE: logarithmic_saw_png, 206, "../img/logarithmic_saw.png"
-static const unsigned char resource_PluginGui_logarithmic_saw_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,149,73,68,65,84,88,133,237,150,81,
-10,128,32,16,68,215,232,94,221,194,75,116,158,46,225,37,235,103,37,24,19,139,218,118,64,31,136,172,32,12,15,87,13,34,178,11,1,147,119,128,204,25,36,233,112,15,226,204,8,130,148,65,156,206,10,177,17,39,
-104,130,204,197,74,212,57,65,109,12,177,145,12,154,193,245,143,33,54,178,64,189,65,125,247,142,193,125,200,170,179,26,166,49,18,196,234,63,210,58,91,208,149,52,70,234,93,243,150,134,1,164,3,35,72,237,
-94,82,104,140,140,32,200,255,65,162,92,118,78,199,70,42,208,4,177,123,107,30,66,99,228,0,184,114,16,107,149,79,109,141,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
-
-const char* PluginGui::logarithmic_saw_png = (const char*) resource_PluginGui_logarithmic_saw_png;
-const int PluginGui::logarithmic_saw_pngSize = 206;
-
-// JUCER_RESOURCE: channeloff_png, 414, "../img/channeloff.png"
-static const unsigned char resource_PluginGui_channeloff_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,16,0,0,0,16,8,6,0,0,0,31,243,255,97,0,0,0,6,98,75,71,68,0,0,0,0,0,0,249,67,187,127,
-0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,7,116,73,77,69,7,222,8,25,20,6,56,156,246,144,159,0,0,0,29,105,84,88,116,67,111,109,109,101,110,116,0,0,0,0,0,67,114,101,97,116,101,100,32,
-119,105,116,104,32,71,73,77,80,100,46,101,7,0,0,1,2,73,68,65,84,56,203,165,211,61,78,66,65,20,5,224,143,193,82,119,224,62,104,40,166,196,194,202,10,66,65,137,149,75,120,121,193,21,216,104,108,164,32,178,
-128,183,1,94,66,67,66,172,172,140,27,176,178,192,202,70,139,55,26,2,138,2,39,153,102,230,220,159,185,231,220,154,85,100,14,113,138,46,154,233,118,138,17,10,185,183,101,122,88,9,110,99,129,11,20,104,164,
-83,164,187,69,226,252,128,204,64,230,67,166,239,55,100,250,137,51,176,86,185,122,104,249,11,153,86,226,182,161,150,254,188,192,185,220,141,255,160,234,242,26,71,117,209,25,142,229,27,90,95,69,105,46,58,
-193,107,72,211,30,218,30,67,116,67,146,106,178,67,130,9,154,193,158,8,201,36,113,135,216,136,105,72,14,235,237,144,160,135,81,248,118,92,182,133,10,21,183,129,162,174,244,46,122,194,157,104,166,244,252,
-167,145,24,163,35,247,80,79,186,62,138,14,112,43,122,81,154,111,168,60,198,165,220,85,229,196,245,101,186,199,44,233,60,89,26,88,47,181,221,145,27,127,133,212,246,93,231,79,44,229,73,181,37,137,229,213,
-0,0,0,0,73,69,78,68,174,66,96,130,0,0};
-
-const char* PluginGui::channeloff_png = (const char*) resource_PluginGui_channeloff_png;
-const int PluginGui::channeloff_pngSize = 414;
-
-// JUCER_RESOURCE: channelon_png, 326, "../img/channelon.png"
-static const unsigned char resource_PluginGui_channelon_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,16,0,0,0,16,8,6,0,0,0,31,243,255,97,0,0,0,6,98,75,71,68,0,0,0,0,0,0,249,67,187,127,
-0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,7,116,73,77,69,7,222,8,25,20,6,39,17,254,157,106,0,0,0,29,105,84,88,116,67,111,109,109,101,110,116,0,0,0,0,0,67,114,101,97,116,101,100,32,
-119,105,116,104,32,71,73,77,80,100,46,101,7,0,0,0,170,73,68,65,84,56,203,173,147,177,13,194,48,16,69,159,143,148,176,81,20,101,129,84,84,68,217,5,89,176,0,204,16,193,0,30,0,69,202,8,169,88,131,12,64,145,
-139,176,82,64,116,230,117,182,252,206,242,249,159,99,201,145,45,80,1,13,144,235,110,15,180,64,192,51,198,199,221,66,62,0,55,190,83,227,185,207,139,77,36,159,128,11,191,217,83,146,209,241,248,20,152,110,
-94,35,207,20,148,60,233,24,156,190,249,133,141,157,104,195,172,84,162,221,182,210,72,244,85,22,114,33,17,209,144,88,233,69,19,102,165,21,32,36,20,8,162,217,174,13,114,141,103,156,146,216,49,80,146,1,197,
-74,249,140,231,250,151,97,114,169,227,252,6,230,208,38,246,228,75,209,233,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
-
-const char* PluginGui::channelon_png = (const char*) resource_PluginGui_channelon_png;
-const int PluginGui::channelon_pngSize = 326;
-
-
-//[EndFile] You can add extra defines here...
-//[/EndFile]
+/*
+ ==============================================================================
+
+ This is an automatically generated GUI class created by the Introjucer!
+
+ 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 Introjucer version: 3.1.1
+
+ ------------------------------------------------------------------------------
+
+ The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions"
+ Copyright 2004-13 by Raw Material Software Ltd.
+
+ ==============================================================================
+*/
+
+//[Headers] You can add your own extra header files here...
+//[/Headers]
+
+#include "PluginGui.h"
+
+
+//[MiscUserDefs] You can add your own user definitions and misc code here...
+void PluginGui::updateFromParameters()
+{
+ emulatorSlider->setValue(processor->getEnumParameter("Emulator"), juce::NotificationType::dontSendNotification);
+ setRecordButtonState(processor->isThisInstanceRecording());
+
+/// setToggleState(bool, bool) is deprecated.
+/// Jeff-Russ replaced the second arg of "false" with dontSendNotification:
+
+ sineImageButton->setToggleState(false, dontSendNotification);
+ halfsineImageButton->setToggleState(false, dontSendNotification);
+ abssineImageButton->setToggleState(false, dontSendNotification);
+ quartersineImageButton->setToggleState(false, dontSendNotification);
+ alternatingsineImageButton->setToggleState(false, dontSendNotification);
+ camelsineImageButton->setToggleState(false, dontSendNotification);
+ squareImageButton->setToggleState(false, dontSendNotification);
+ logsawImageButton->setToggleState(false, dontSendNotification);
+ switch(processor->getEnumParameter("Modulator Wave")) {
+ case 0: sineImageButton->setToggleState(true, dontSendNotification); break;
+ case 1: halfsineImageButton->setToggleState(true, dontSendNotification); break;
+ case 2: abssineImageButton->setToggleState(true, dontSendNotification); break;
+ case 3: quartersineImageButton->setToggleState(true, dontSendNotification); break;
+ case 4: alternatingsineImageButton->setToggleState(true, dontSendNotification); break;
+ case 5: camelsineImageButton->setToggleState(true, dontSendNotification); break;
+ case 6: squareImageButton->setToggleState(true, dontSendNotification); break;
+ case 7: logsawImageButton->setToggleState(true, dontSendNotification); break;
+
+ }
+ sineImageButton2->setToggleState(false, dontSendNotification);
+ halfsineImageButton2->setToggleState(false, dontSendNotification);
+ abssineImageButton2->setToggleState(false, dontSendNotification);
+ quartersineImageButton2->setToggleState(false, dontSendNotification);
+ alternatingsineImageButton2->setToggleState(false, dontSendNotification);
+ camelsineImageButton2->setToggleState(false, dontSendNotification);
+ squareImageButton2->setToggleState(false, dontSendNotification);
+ logsawImageButton2->setToggleState(false, dontSendNotification);
+ switch(processor->getEnumParameter("Carrier Wave")) {
+ case 0: sineImageButton2->setToggleState(true, dontSendNotification); break;
+ case 1: halfsineImageButton2->setToggleState(true, dontSendNotification); break;
+ case 2: abssineImageButton2->setToggleState(true, dontSendNotification); break;
+ case 3: quartersineImageButton2->setToggleState(true, dontSendNotification); break;
+ case 4: alternatingsineImageButton2->setToggleState(true, dontSendNotification); break;
+ case 5: camelsineImageButton2->setToggleState(true, dontSendNotification); break;
+ case 6: squareImageButton2->setToggleState(true, dontSendNotification); break;
+ case 7: logsawImageButton2->setToggleState(true, dontSendNotification); break;
+ }
+
+/// setSelectedItemIndex(bool, bool) is deprecated.
+/// Jeff-Russ replaced the second arg of "true" with "sendNotificationAsync":
+
+ frequencyComboBox->setSelectedItemIndex (
+ processor->getEnumParameter("Modulator Frequency Multiplier"),
+ sendNotificationAsync);
+ frequencyComboBox2->setSelectedItemIndex (
+ processor->getEnumParameter("Carrier Frequency Multiplier"),
+ sendNotificationAsync);
+
+ attenuationSlider->setValue(processor->getEnumParameter("Modulator Attenuation") * -0.75, juce::NotificationType::dontSendNotification);
+ attenuationSlider2->setValue(processor->getEnumParameter("Carrier Attenuation") * -0.75, juce::NotificationType::dontSendNotification);
+
+ aSlider->setValue(processor->getIntParameter("Modulator Attack"), juce::NotificationType::dontSendNotification);
+ dSlider->setValue(processor->getIntParameter("Modulator Decay"), juce::NotificationType::dontSendNotification);
+ sSlider->setValue(processor->getIntParameter("Modulator Sustain Level"), juce::NotificationType::dontSendNotification);
+ rSlider->setValue(processor->getIntParameter("Modulator Release"), juce::NotificationType::dontSendNotification);
+ aSlider2->setValue(processor->getIntParameter("Carrier Attack"), juce::NotificationType::dontSendNotification);
+ dSlider2->setValue(processor->getIntParameter("Carrier Decay"), juce::NotificationType::dontSendNotification);
+ sSlider2->setValue(processor->getIntParameter("Carrier Sustain Level"), juce::NotificationType::dontSendNotification);
+ rSlider2->setValue(processor->getIntParameter("Carrier Release"), juce::NotificationType::dontSendNotification);
+
+/// Jeff-Russ replaced the second arg of "true" with "sendNotificationAsync":
+
+ keyscaleAttenuationComboBox->setSelectedItemIndex (
+ processor->getEnumParameter("Modulator Keyscale Level"),
+ sendNotificationAsync);
+ keyscaleAttenuationComboBox2->setSelectedItemIndex (
+ processor->getEnumParameter("Carrier Keyscale Level"),
+ sendNotificationAsync);
+
+
+ if (processor->getEnumParameter("Modulator Tremolo")) tremoloButton->setToggleState(true, dontSendNotification);
+ if (processor->getEnumParameter("Modulator Vibrato")) vibratoButton->setToggleState(true, dontSendNotification);
+ if (processor->getEnumParameter("Modulator Sustain")) sustainButton->setToggleState(true, dontSendNotification);
+ if (processor->getEnumParameter("Modulator Keyscale Rate")) keyscaleEnvButton->setToggleState(true, dontSendNotification);
+
+ if (processor->getEnumParameter("Carrier Tremolo")) tremoloButton2->setToggleState(true, dontSendNotification);
+ if (processor->getEnumParameter("Carrier Vibrato")) vibratoButton2->setToggleState(true, dontSendNotification);
+ if (processor->getEnumParameter("Carrier Sustain")) sustainButton2->setToggleState(true, dontSendNotification);
+ if (processor->getEnumParameter("Carrier Keyscale Rate")) keyscaleEnvButton2->setToggleState(true, dontSendNotification);
+
+ vibratoSlider->setValue(processor->getEnumParameter("Vibrato Depth") * 7.0 + 7.0, juce::NotificationType::dontSendNotification);
+ tremoloSlider->setValue(processor->getEnumParameter("Tremolo Depth") * 3.8 + 1.0, juce::NotificationType::dontSendNotification);
+ feedbackSlider->setValue(processor->getIntParameter("Modulator Feedback"), juce::NotificationType::dontSendNotification);
+
+/// Jeff-Russ replaced the second arg of "true" with "sendNotificationAsync":
+
+ velocityComboBox->setSelectedItemIndex (
+ processor->getEnumParameter("Modulator Velocity Sensitivity"),
+ sendNotificationAsync);
+ velocityComboBox2->setSelectedItemIndex (
+ processor->getEnumParameter("Carrier Velocity Sensitivity"),
+ sendNotificationAsync);
+ algorithmComboBox->setSelectedItemIndex (
+ processor->getEnumParameter("Algorithm"),
+ sendNotificationAsync);
+ percussionComboBox->setSelectedItemIndex (
+ processor->getEnumParameter("Percussion Mode"),
+ sendNotificationAsync);
+
+ tooltipWindow.setColour(tooltipWindow.backgroundColourId, Colour(0x0));
+ tooltipWindow.setColour(tooltipWindow.textColourId, Colour(COLOUR_MID));
+}
+
+void PluginGui::setRecordButtonState(bool recording) {
+ if (recording) {
+ recordButton->setColour(TextButton::buttonColourId, Colour(COLOUR_RECORDING));
+ recordButton->setButtonText("Recording..");
+ recordButton->setColour(ToggleButton::textColourId, Colour(COLOUR_RECORDING));
+ } else {
+ recordButton->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
+ recordButton->setButtonText("Record to DRO");
+ recordButton->setColour(ToggleButton::textColourId, Colour(COLOUR_MID));
+ }
+}
+
+//[/MiscUserDefs]
+
+//==============================================================================
+PluginGui::PluginGui (AdlibBlasterAudioProcessor* ownerFilter)
+ : AudioProcessorEditor (ownerFilter)
+{
+ addAndMakeVisible (groupComponent = new GroupComponent ("new group",
+ TRANS("Modulator")));
+ groupComponent->setTextLabelPosition (Justification::centredLeft);
+ groupComponent->setColour (GroupComponent::outlineColourId, Colour (0xff007f00));
+ groupComponent->setColour (GroupComponent::textColourId, Colour (0xff007f00));
+
+ addAndMakeVisible (frequencyComboBox = new ComboBox ("frequency combo box"));
+ frequencyComboBox->setEditableText (false);
+ frequencyComboBox->setJustificationType (Justification::centredLeft);
+ frequencyComboBox->setTextWhenNothingSelected (String::empty);
+ frequencyComboBox->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
+ frequencyComboBox->addListener (this);
+
+ addAndMakeVisible (frequencyLabel = new Label ("frequency label",
+ TRANS("Frequency")));
+ frequencyLabel->setTooltip (TRANS("Multiplier applied to base note frequency"));
+ frequencyLabel->setFont (Font (15.00f, Font::plain));
+ frequencyLabel->setJustificationType (Justification::centredLeft);
+ frequencyLabel->setEditable (false, false, false);
+ frequencyLabel->setColour (Label::textColourId, Colour (0xff007f00));
+ frequencyLabel->setColour (TextEditor::textColourId, Colours::black);
+ frequencyLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (aSlider = new Slider ("a slider"));
+ aSlider->setTooltip (TRANS("Envelope attack rate"));
+ aSlider->setRange (0, 15, 1);
+ aSlider->setSliderStyle (Slider::LinearVertical);
+ aSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
+ aSlider->setColour (Slider::thumbColourId, Colour (0xff00af00));
+ aSlider->setColour (Slider::trackColourId, Colour (0x7f007f00));
+ aSlider->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
+ aSlider->setColour (Slider::textBoxBackgroundColourId, Colours::black);
+ aSlider->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
+ aSlider->addListener (this);
+
+ addAndMakeVisible (aLabel = new Label ("a label",
+ TRANS("A")));
+ aLabel->setTooltip (TRANS("Attack rate"));
+ aLabel->setFont (Font (15.00f, Font::plain));
+ aLabel->setJustificationType (Justification::centred);
+ aLabel->setEditable (false, false, false);
+ aLabel->setColour (Label::textColourId, Colour (0xff007f00));
+ aLabel->setColour (TextEditor::textColourId, Colours::black);
+ aLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (dSlider = new Slider ("d slider"));
+ dSlider->setTooltip (TRANS("Envelope decay rate"));
+ dSlider->setRange (0, 15, 1);
+ dSlider->setSliderStyle (Slider::LinearVertical);
+ dSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
+ dSlider->setColour (Slider::thumbColourId, Colour (0xff00af00));
+ dSlider->setColour (Slider::trackColourId, Colour (0x7f007f00));
+ dSlider->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
+ dSlider->setColour (Slider::textBoxBackgroundColourId, Colours::black);
+ dSlider->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
+ dSlider->addListener (this);
+
+ addAndMakeVisible (dLabel = new Label ("d label",
+ TRANS("D")));
+ dLabel->setTooltip (TRANS("Decay rate"));
+ dLabel->setFont (Font (15.00f, Font::plain));
+ dLabel->setJustificationType (Justification::centred);
+ dLabel->setEditable (false, false, false);
+ dLabel->setColour (Label::textColourId, Colour (0xff007f00));
+ dLabel->setColour (TextEditor::textColourId, Colours::black);
+ dLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (sSlider = new Slider ("s slider"));
+ sSlider->setTooltip (TRANS("Envelope sustain level"));
+ sSlider->setRange (0, 15, 1);
+ sSlider->setSliderStyle (Slider::LinearVertical);
+ sSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
+ sSlider->setColour (Slider::thumbColourId, Colour (0xff00af00));
+ sSlider->setColour (Slider::trackColourId, Colour (0x7f007f00));
+ sSlider->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
+ sSlider->setColour (Slider::textBoxBackgroundColourId, Colours::black);
+ sSlider->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
+ sSlider->addListener (this);
+
+ addAndMakeVisible (dLabel2 = new Label ("d label",
+ TRANS("S")));
+ dLabel2->setTooltip (TRANS("Sustain level"));
+ dLabel2->setFont (Font (15.00f, Font::plain));
+ dLabel2->setJustificationType (Justification::centred);
+ dLabel2->setEditable (false, false, false);
+ dLabel2->setColour (Label::textColourId, Colour (0xff007f00));
+ dLabel2->setColour (TextEditor::textColourId, Colours::black);
+ dLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (rSlider = new Slider ("r slider"));
+ rSlider->setTooltip (TRANS("Envelope release rate"));
+ rSlider->setRange (0, 15, 1);
+ rSlider->setSliderStyle (Slider::LinearVertical);
+ rSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
+ rSlider->setColour (Slider::thumbColourId, Colour (0xff00af00));
+ rSlider->setColour (Slider::trackColourId, Colour (0x7f007f00));
+ rSlider->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
+ rSlider->setColour (Slider::textBoxBackgroundColourId, Colours::black);
+ rSlider->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
+ rSlider->addListener (this);
+
+ addAndMakeVisible (rLabel = new Label ("r label",
+ TRANS("R")));
+ rLabel->setTooltip (TRANS("Release rate"));
+ rLabel->setFont (Font (15.00f, Font::plain));
+ rLabel->setJustificationType (Justification::centred);
+ rLabel->setEditable (false, false, false);
+ rLabel->setColour (Label::textColourId, Colour (0xff007f00));
+ rLabel->setColour (TextEditor::textColourId, Colours::black);
+ rLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (attenuationSlider = new Slider ("attenuation slider"));
+ attenuationSlider->setRange (-47.25, 0, 0.75);
+ attenuationSlider->setSliderStyle (Slider::LinearVertical);
+ attenuationSlider->setTextBoxStyle (Slider::TextBoxBelow, false, 64, 20);
+ attenuationSlider->setColour (Slider::thumbColourId, Colour (0xff00af00));
+ attenuationSlider->setColour (Slider::trackColourId, Colour (0x7f007f00));
+ attenuationSlider->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
+ attenuationSlider->setColour (Slider::textBoxBackgroundColourId, Colours::black);
+ attenuationSlider->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
+ attenuationSlider->addListener (this);
+
+ addAndMakeVisible (attenuationLabel = new Label ("attenuation label",
+ TRANS("Attenuation")));
+ attenuationLabel->setTooltip (TRANS("Final output level adjustment"));
+ attenuationLabel->setFont (Font (15.00f, Font::plain));
+ attenuationLabel->setJustificationType (Justification::centred);
+ attenuationLabel->setEditable (false, false, false);
+ attenuationLabel->setColour (Label::textColourId, Colour (0xff007f00));
+ attenuationLabel->setColour (TextEditor::textColourId, Colours::black);
+ attenuationLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (dbLabel = new Label ("db label",
+ TRANS("dB")));
+ dbLabel->setFont (Font (15.00f, Font::plain));
+ dbLabel->setJustificationType (Justification::centred);
+ dbLabel->setEditable (false, false, false);
+ dbLabel->setColour (Label::textColourId, Colour (0xff007f00));
+ dbLabel->setColour (Label::outlineColourId, Colour (0x00000000));
+ dbLabel->setColour (TextEditor::textColourId, Colours::black);
+ dbLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (sineImageButton = new ImageButton ("sine image button"));
+ sineImageButton->setButtonText (TRANS("Sine"));
+ sineImageButton->setRadioGroupId (1);
+ sineImageButton->addListener (this);
+
+ sineImageButton->setImages (false, true, true,
+ ImageCache::getFromMemory (full_sine_png, full_sine_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (halfsineImageButton = new ImageButton ("half sine image button"));
+ halfsineImageButton->setButtonText (TRANS("Half Sine"));
+ halfsineImageButton->setRadioGroupId (1);
+ halfsineImageButton->addListener (this);
+
+ halfsineImageButton->setImages (false, true, true,
+ ImageCache::getFromMemory (half_sine_png, half_sine_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (abssineImageButton = new ImageButton ("abs sine image button"));
+ abssineImageButton->setButtonText (TRANS("Abs Sine"));
+ abssineImageButton->setRadioGroupId (1);
+ abssineImageButton->addListener (this);
+
+ abssineImageButton->setImages (false, true, true,
+ ImageCache::getFromMemory (abs_sine_png, abs_sine_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (quartersineImageButton = new ImageButton ("quarter sine image button"));
+ quartersineImageButton->setButtonText (TRANS("Quarter Sine"));
+ quartersineImageButton->setRadioGroupId (1);
+ quartersineImageButton->addListener (this);
+
+ quartersineImageButton->setImages (false, true, true,
+ ImageCache::getFromMemory (quarter_sine_png, quarter_sine_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (waveLabel = new Label ("wave label",
+ TRANS("Wave")));
+ waveLabel->setFont (Font (15.00f, Font::plain));
+ waveLabel->setJustificationType (Justification::centredLeft);
+ waveLabel->setEditable (false, false, false);
+ waveLabel->setColour (Label::textColourId, Colour (0xff007f00));
+ waveLabel->setColour (TextEditor::textColourId, Colours::black);
+ waveLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (tremoloButton = new ToggleButton ("tremolo button"));
+ tremoloButton->setButtonText (TRANS("Tremolo"));
+ tremoloButton->addListener (this);
+ tremoloButton->setColour (ToggleButton::textColourId, Colour (0xff007f00));
+
+ addAndMakeVisible (vibratoButton = new ToggleButton ("vibrato button"));
+ vibratoButton->setButtonText (TRANS("Vibrato"));
+ vibratoButton->addListener (this);
+ vibratoButton->setColour (ToggleButton::textColourId, Colour (0xff007f00));
+
+ addAndMakeVisible (sustainButton = new ToggleButton ("sustain button"));
+ sustainButton->setTooltip (TRANS("Enable or disable sustain when note is held"));
+ sustainButton->setButtonText (TRANS("Sustain"));
+ sustainButton->addListener (this);
+ sustainButton->setColour (ToggleButton::textColourId, Colour (0xff007f00));
+
+ addAndMakeVisible (keyscaleEnvButton = new ToggleButton ("keyscale env button"));
+ keyscaleEnvButton->setTooltip (TRANS("Speed up envelope rate with note frequency"));
+ keyscaleEnvButton->setButtonText (TRANS("Keyscale Envelope Rate"));
+ keyscaleEnvButton->addListener (this);
+ keyscaleEnvButton->setColour (ToggleButton::textColourId, Colour (0xff007f00));
+
+ addAndMakeVisible (frequencyLabel2 = new Label ("frequency label",
+ TRANS("Keyscale Attenuation")));
+ frequencyLabel2->setTooltip (TRANS("Attenuate amplitude with note frequency"));
+ frequencyLabel2->setFont (Font (15.00f, Font::plain));
+ frequencyLabel2->setJustificationType (Justification::centred);
+ frequencyLabel2->setEditable (false, false, false);
+ frequencyLabel2->setColour (Label::textColourId, Colour (0xff007f00));
+ frequencyLabel2->setColour (TextEditor::textColourId, Colours::black);
+ frequencyLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (dbLabel2 = new Label ("db label",
+ TRANS("dB/8ve\n")));
+ dbLabel2->setFont (Font (15.00f, Font::plain));
+ dbLabel2->setJustificationType (Justification::centred);
+ dbLabel2->setEditable (false, false, false);
+ dbLabel2->setColour (Label::textColourId, Colour (0xff007f00));
+ dbLabel2->setColour (Label::outlineColourId, Colour (0x00000000));
+ dbLabel2->setColour (TextEditor::textColourId, Colours::black);
+ dbLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (groupComponent2 = new GroupComponent ("new group",
+ TRANS("Carrier")));
+ groupComponent2->setTextLabelPosition (Justification::centredLeft);
+ groupComponent2->setColour (GroupComponent::outlineColourId, Colour (0xff007f00));
+ groupComponent2->setColour (GroupComponent::textColourId, Colour (0xff007f00));
+
+ addAndMakeVisible (frequencyComboBox2 = new ComboBox ("frequency combo box"));
+ frequencyComboBox2->setEditableText (false);
+ frequencyComboBox2->setJustificationType (Justification::centredLeft);
+ frequencyComboBox2->setTextWhenNothingSelected (String::empty);
+ frequencyComboBox2->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
+ frequencyComboBox2->addListener (this);
+
+ addAndMakeVisible (frequencyLabel3 = new Label ("frequency label",
+ TRANS("Frequency")));
+ frequencyLabel3->setTooltip (TRANS("Multiplier applied to base note frequency"));
+ frequencyLabel3->setFont (Font (15.00f, Font::plain));
+ frequencyLabel3->setJustificationType (Justification::centredLeft);
+ frequencyLabel3->setEditable (false, false, false);
+ frequencyLabel3->setColour (Label::textColourId, Colour (0xff007f00));
+ frequencyLabel3->setColour (TextEditor::textColourId, Colours::black);
+ frequencyLabel3->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (aSlider2 = new Slider ("a slider"));
+ aSlider2->setRange (0, 15, 1);
+ aSlider2->setSliderStyle (Slider::LinearVertical);
+ aSlider2->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
+ aSlider2->setColour (Slider::thumbColourId, Colour (0xff00af00));
+ aSlider2->setColour (Slider::trackColourId, Colour (0x7f007f00));
+ aSlider2->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
+ aSlider2->setColour (Slider::textBoxBackgroundColourId, Colours::black);
+ aSlider2->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
+ aSlider2->addListener (this);
+
+ addAndMakeVisible (aLabel2 = new Label ("a label",
+ TRANS("A")));
+ aLabel2->setTooltip (TRANS("Attack rate"));
+ aLabel2->setFont (Font (15.00f, Font::plain));
+ aLabel2->setJustificationType (Justification::centred);
+ aLabel2->setEditable (false, false, false);
+ aLabel2->setColour (Label::textColourId, Colour (0xff007f00));
+ aLabel2->setColour (TextEditor::textColourId, Colours::black);
+ aLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (dSlider2 = new Slider ("d slider"));
+ dSlider2->setRange (0, 15, 1);
+ dSlider2->setSliderStyle (Slider::LinearVertical);
+ dSlider2->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
+ dSlider2->setColour (Slider::thumbColourId, Colour (0xff00af00));
+ dSlider2->setColour (Slider::trackColourId, Colour (0x7f007f00));
+ dSlider2->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
+ dSlider2->setColour (Slider::textBoxBackgroundColourId, Colours::black);
+ dSlider2->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
+ dSlider2->addListener (this);
+
+ addAndMakeVisible (dLabel3 = new Label ("d label",
+ TRANS("D")));
+ dLabel3->setTooltip (TRANS("Decay rate"));
+ dLabel3->setFont (Font (15.00f, Font::plain));
+ dLabel3->setJustificationType (Justification::centred);
+ dLabel3->setEditable (false, false, false);
+ dLabel3->setColour (Label::textColourId, Colour (0xff007f00));
+ dLabel3->setColour (TextEditor::textColourId, Colours::black);
+ dLabel3->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (sSlider2 = new Slider ("s slider"));
+ sSlider2->setRange (0, 15, 1);
+ sSlider2->setSliderStyle (Slider::LinearVertical);
+ sSlider2->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
+ sSlider2->setColour (Slider::thumbColourId, Colour (0xff00af00));
+ sSlider2->setColour (Slider::trackColourId, Colour (0x7f007f00));
+ sSlider2->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
+ sSlider2->setColour (Slider::textBoxBackgroundColourId, Colours::black);
+ sSlider2->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
+ sSlider2->addListener (this);
+
+ addAndMakeVisible (dLabel4 = new Label ("d label",
+ TRANS("S")));
+ dLabel4->setTooltip (TRANS("Sustain level"));
+ dLabel4->setFont (Font (15.00f, Font::plain));
+ dLabel4->setJustificationType (Justification::centred);
+ dLabel4->setEditable (false, false, false);
+ dLabel4->setColour (Label::textColourId, Colour (0xff007f00));
+ dLabel4->setColour (TextEditor::textColourId, Colours::black);
+ dLabel4->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (rSlider2 = new Slider ("r slider"));
+ rSlider2->setRange (0, 15, 1);
+ rSlider2->setSliderStyle (Slider::LinearVertical);
+ rSlider2->setTextBoxStyle (Slider::TextBoxBelow, false, 40, 20);
+ rSlider2->setColour (Slider::thumbColourId, Colour (0xff00af00));
+ rSlider2->setColour (Slider::trackColourId, Colour (0x7f007f00));
+ rSlider2->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
+ rSlider2->setColour (Slider::textBoxBackgroundColourId, Colours::black);
+ rSlider2->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
+ rSlider2->addListener (this);
+
+ addAndMakeVisible (rLabel2 = new Label ("r label",
+ TRANS("R")));
+ rLabel2->setTooltip (TRANS("Release rate"));
+ rLabel2->setFont (Font (15.00f, Font::plain));
+ rLabel2->setJustificationType (Justification::centred);
+ rLabel2->setEditable (false, false, false);
+ rLabel2->setColour (Label::textColourId, Colour (0xff007f00));
+ rLabel2->setColour (TextEditor::textColourId, Colours::black);
+ rLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (attenuationSlider2 = new Slider ("attenuation slider"));
+ attenuationSlider2->setRange (-47.25, 0, 0.75);
+ attenuationSlider2->setSliderStyle (Slider::LinearVertical);
+ attenuationSlider2->setTextBoxStyle (Slider::TextBoxBelow, false, 64, 20);
+ attenuationSlider2->setColour (Slider::thumbColourId, Colour (0xff00af00));
+ attenuationSlider2->setColour (Slider::trackColourId, Colour (0x7f007f00));
+ attenuationSlider2->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
+ attenuationSlider2->setColour (Slider::textBoxBackgroundColourId, Colours::black);
+ attenuationSlider2->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
+ attenuationSlider2->addListener (this);
+
+ addAndMakeVisible (attenuationLabel2 = new Label ("attenuation label",
+ TRANS("Attenuation")));
+ attenuationLabel2->setTooltip (TRANS("Final output level adjustment"));
+ attenuationLabel2->setFont (Font (15.00f, Font::plain));
+ attenuationLabel2->setJustificationType (Justification::centred);
+ attenuationLabel2->setEditable (false, false, false);
+ attenuationLabel2->setColour (Label::textColourId, Colour (0xff007f00));
+ attenuationLabel2->setColour (TextEditor::textColourId, Colours::black);
+ attenuationLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (dbLabel3 = new Label ("db label",
+ TRANS("dB")));
+ dbLabel3->setFont (Font (15.00f, Font::plain));
+ dbLabel3->setJustificationType (Justification::centred);
+ dbLabel3->setEditable (false, false, false);
+ dbLabel3->setColour (Label::textColourId, Colour (0xff007f00));
+ dbLabel3->setColour (Label::outlineColourId, Colour (0x00000000));
+ dbLabel3->setColour (TextEditor::textColourId, Colours::black);
+ dbLabel3->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (sineImageButton2 = new ImageButton ("sine image button"));
+ sineImageButton2->setButtonText (TRANS("Sine"));
+ sineImageButton2->setRadioGroupId (2);
+ sineImageButton2->addListener (this);
+
+ sineImageButton2->setImages (false, true, true,
+ ImageCache::getFromMemory (full_sine_png, full_sine_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (halfsineImageButton2 = new ImageButton ("half sine image button"));
+ halfsineImageButton2->setButtonText (TRANS("Half Sine"));
+ halfsineImageButton2->setRadioGroupId (2);
+ halfsineImageButton2->addListener (this);
+
+ halfsineImageButton2->setImages (false, true, true,
+ ImageCache::getFromMemory (half_sine_png, half_sine_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (abssineImageButton2 = new ImageButton ("abs sine image button"));
+ abssineImageButton2->setButtonText (TRANS("Abs Sine"));
+ abssineImageButton2->setRadioGroupId (2);
+ abssineImageButton2->addListener (this);
+
+ abssineImageButton2->setImages (false, true, true,
+ ImageCache::getFromMemory (abs_sine_png, abs_sine_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (quartersineImageButton2 = new ImageButton ("quarter sine image button"));
+ quartersineImageButton2->setButtonText (TRANS("Quarter Sine"));
+ quartersineImageButton2->setRadioGroupId (2);
+ quartersineImageButton2->addListener (this);
+
+ quartersineImageButton2->setImages (false, true, true,
+ ImageCache::getFromMemory (quarter_sine_png, quarter_sine_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (waveLabel2 = new Label ("wave label",
+ TRANS("Wave")));
+ waveLabel2->setFont (Font (15.00f, Font::plain));
+ waveLabel2->setJustificationType (Justification::centredLeft);
+ waveLabel2->setEditable (false, false, false);
+ waveLabel2->setColour (Label::textColourId, Colour (0xff007f00));
+ waveLabel2->setColour (TextEditor::textColourId, Colours::black);
+ waveLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (tremoloButton2 = new ToggleButton ("tremolo button"));
+ tremoloButton2->setButtonText (TRANS("Tremolo"));
+ tremoloButton2->addListener (this);
+ tremoloButton2->setColour (ToggleButton::textColourId, Colour (0xff007f00));
+
+ addAndMakeVisible (vibratoButton2 = new ToggleButton ("vibrato button"));
+ vibratoButton2->setButtonText (TRANS("Vibrato"));
+ vibratoButton2->addListener (this);
+ vibratoButton2->setColour (ToggleButton::textColourId, Colour (0xff007f00));
+
+ addAndMakeVisible (sustainButton2 = new ToggleButton ("sustain button"));
+ sustainButton2->setTooltip (TRANS("Enable or disable sustain when note is held"));
+ sustainButton2->setButtonText (TRANS("Sustain"));
+ sustainButton2->addListener (this);
+ sustainButton2->setColour (ToggleButton::textColourId, Colour (0xff007f00));
+
+ addAndMakeVisible (keyscaleEnvButton2 = new ToggleButton ("keyscale env button"));
+ keyscaleEnvButton2->setTooltip (TRANS("Speed up envelope rate with note frequency"));
+ keyscaleEnvButton2->setButtonText (TRANS("Keyscale Envelope Rate"));
+ keyscaleEnvButton2->addListener (this);
+ keyscaleEnvButton2->setColour (ToggleButton::textColourId, Colour (0xff007f00));
+
+ addAndMakeVisible (frequencyLabel4 = new Label ("frequency label",
+ TRANS("Keyscale Attenuation")));
+ frequencyLabel4->setTooltip (TRANS("Attenuate amplitude with note frequency"));
+ frequencyLabel4->setFont (Font (15.00f, Font::plain));
+ frequencyLabel4->setJustificationType (Justification::centred);
+ frequencyLabel4->setEditable (false, false, false);
+ frequencyLabel4->setColour (Label::textColourId, Colour (0xff007f00));
+ frequencyLabel4->setColour (TextEditor::textColourId, Colours::black);
+ frequencyLabel4->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (groupComponent3 = new GroupComponent ("new group",
+ TRANS("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",
+ TRANS("Tremolo Depth\n")));
+ frequencyLabel5->setTooltip (TRANS("OPL global tremolo depth"));
+ frequencyLabel5->setFont (Font (15.00f, Font::plain));
+ frequencyLabel5->setJustificationType (Justification::centredLeft);
+ 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",
+ TRANS("dB")));
+ dbLabel5->setFont (Font (15.00f, Font::plain));
+ dbLabel5->setJustificationType (Justification::centredLeft);
+ 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",
+ TRANS("Vibrato Depth")));
+ frequencyLabel6->setTooltip (TRANS("OPL global vibrato depth"));
+ frequencyLabel6->setFont (Font (15.00f, Font::plain));
+ frequencyLabel6->setJustificationType (Justification::centredLeft);
+ 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",
+ TRANS("cents\n")));
+ dbLabel6->setTooltip (TRANS("A unit of pitch; 100 cents per semitone"));
+ dbLabel6->setFont (Font (15.00f, Font::plain));
+ dbLabel6->setJustificationType (Justification::centredLeft);
+ 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",
+ TRANS("Feedback")));
+ frequencyLabel7->setTooltip (TRANS("Extent to which modulator output is fed back into itself"));
+ 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));
+
+ addAndMakeVisible (velocityComboBox = new ComboBox ("velocity combo box"));
+ velocityComboBox->setEditableText (false);
+ velocityComboBox->setJustificationType (Justification::centredLeft);
+ velocityComboBox->setTextWhenNothingSelected (String::empty);
+ velocityComboBox->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
+ velocityComboBox->addItem (TRANS("Off"), 1);
+ velocityComboBox->addItem (TRANS("Light"), 2);
+ velocityComboBox->addItem (TRANS("Heavy"), 3);
+ velocityComboBox->addListener (this);
+
+ addAndMakeVisible (attenuationLabel3 = new Label ("attenuation label",
+ TRANS("Velocity")));
+ attenuationLabel3->setTooltip (TRANS("Set or disable velocity senstivity"));
+ attenuationLabel3->setFont (Font (15.00f, Font::plain));
+ attenuationLabel3->setJustificationType (Justification::centredLeft);
+ attenuationLabel3->setEditable (false, false, false);
+ attenuationLabel3->setColour (Label::textColourId, Colour (0xff007f00));
+ attenuationLabel3->setColour (TextEditor::textColourId, Colours::black);
+ attenuationLabel3->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (velocityComboBox2 = new ComboBox ("velocity combo box"));
+ velocityComboBox2->setEditableText (false);
+ velocityComboBox2->setJustificationType (Justification::centredLeft);
+ velocityComboBox2->setTextWhenNothingSelected (String::empty);
+ velocityComboBox2->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
+ velocityComboBox2->addItem (TRANS("Off"), 1);
+ velocityComboBox2->addItem (TRANS("Light"), 2);
+ velocityComboBox2->addItem (TRANS("Heavy"), 3);
+ velocityComboBox2->addListener (this);
+
+ addAndMakeVisible (attenuationLabel4 = new Label ("attenuation label",
+ TRANS("Velocity")));
+ attenuationLabel4->setTooltip (TRANS("Set or disable velocity senstivity"));
+ attenuationLabel4->setFont (Font (15.00f, Font::plain));
+ attenuationLabel4->setJustificationType (Justification::centredLeft);
+ attenuationLabel4->setEditable (false, false, false);
+ attenuationLabel4->setColour (Label::textColourId, Colour (0xff007f00));
+ attenuationLabel4->setColour (TextEditor::textColourId, Colours::black);
+ attenuationLabel4->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (alternatingsineImageButton = new ImageButton ("alternating sine image button"));
+ alternatingsineImageButton->setButtonText (TRANS("Alternating Sine"));
+ alternatingsineImageButton->setRadioGroupId (1);
+ alternatingsineImageButton->addListener (this);
+
+ alternatingsineImageButton->setImages (false, true, true,
+ ImageCache::getFromMemory (alternating_sine_png, alternating_sine_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (camelsineImageButton = new ImageButton ("camel sine image button"));
+ camelsineImageButton->setButtonText (TRANS("Camel Sine"));
+ camelsineImageButton->setRadioGroupId (1);
+ camelsineImageButton->addListener (this);
+
+ camelsineImageButton->setImages (false, true, true,
+ ImageCache::getFromMemory (camel_sine_png, camel_sine_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (squareImageButton = new ImageButton ("square image button"));
+ squareImageButton->setButtonText (TRANS("Square"));
+ squareImageButton->setRadioGroupId (1);
+ squareImageButton->addListener (this);
+
+ squareImageButton->setImages (false, true, true,
+ ImageCache::getFromMemory (square_png, square_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (logsawImageButton = new ImageButton ("logsaw image button"));
+ logsawImageButton->setButtonText (TRANS("Logarithmic Sawtooth"));
+ logsawImageButton->setRadioGroupId (1);
+ logsawImageButton->addListener (this);
+
+ logsawImageButton->setImages (false, true, true,
+ ImageCache::getFromMemory (logarithmic_saw_png, logarithmic_saw_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (alternatingsineImageButton2 = new ImageButton ("alternating sine image button"));
+ alternatingsineImageButton2->setButtonText (TRANS("Alternating Sine"));
+ alternatingsineImageButton2->setRadioGroupId (2);
+ alternatingsineImageButton2->addListener (this);
+
+ alternatingsineImageButton2->setImages (false, true, true,
+ ImageCache::getFromMemory (alternating_sine_png, alternating_sine_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (camelsineImageButton2 = new ImageButton ("camel sine image button"));
+ camelsineImageButton2->setButtonText (TRANS("Camel Sine"));
+ camelsineImageButton2->setRadioGroupId (2);
+ camelsineImageButton2->addListener (this);
+
+ camelsineImageButton2->setImages (false, true, true,
+ ImageCache::getFromMemory (camel_sine_png, camel_sine_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (squareImageButton2 = new ImageButton ("square image button"));
+ squareImageButton2->setButtonText (TRANS("Square"));
+ squareImageButton2->setRadioGroupId (2);
+ squareImageButton2->addListener (this);
+
+ squareImageButton2->setImages (false, true, true,
+ ImageCache::getFromMemory (square_png, square_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (logsawImageButton2 = new ImageButton ("logsaw image button"));
+ logsawImageButton2->setButtonText (TRANS("Logarithmic Sawtooth"));
+ logsawImageButton2->setRadioGroupId (2);
+ logsawImageButton2->addListener (this);
+
+ logsawImageButton2->setImages (false, true, true,
+ ImageCache::getFromMemory (logarithmic_saw_png, logarithmic_saw_pngSize), 0.500f, Colour (0x00000000),
+ Image(), 0.500f, Colour (0x00000000),
+ Image(), 1.000f, Colour (0x00000000));
+ addAndMakeVisible (algorithmComboBox = new ComboBox ("algorithm combo box"));
+ algorithmComboBox->setEditableText (false);
+ algorithmComboBox->setJustificationType (Justification::centredLeft);
+ algorithmComboBox->setTextWhenNothingSelected (String::empty);
+ algorithmComboBox->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
+ algorithmComboBox->addItem (TRANS("FM"), 1);
+ algorithmComboBox->addItem (TRANS("Additive"), 2);
+ algorithmComboBox->addListener (this);
+
+ addAndMakeVisible (frequencyLabel8 = new Label ("frequency label",
+ TRANS("Algorithm")));
+ frequencyLabel8->setTooltip (TRANS("In additive mode, carrier and modulator output are simply summed rather than modulated"));
+ frequencyLabel8->setFont (Font (15.00f, Font::plain));
+ frequencyLabel8->setJustificationType (Justification::centredLeft);
+ frequencyLabel8->setEditable (false, false, false);
+ frequencyLabel8->setColour (Label::textColourId, Colour (0xff007f00));
+ frequencyLabel8->setColour (TextEditor::textColourId, Colours::black);
+ frequencyLabel8->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (dbLabel4 = new Label ("db label",
+ TRANS("dB/8ve\n")));
+ dbLabel4->setFont (Font (15.00f, Font::plain));
+ dbLabel4->setJustificationType (Justification::centred);
+ dbLabel4->setEditable (false, false, false);
+ dbLabel4->setColour (Label::textColourId, Colour (0xff007f00));
+ dbLabel4->setColour (Label::outlineColourId, Colour (0x00000000));
+ dbLabel4->setColour (TextEditor::textColourId, Colours::black);
+ dbLabel4->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (keyscaleAttenuationComboBox2 = new ComboBox ("keyscale combo box"));
+ keyscaleAttenuationComboBox2->setEditableText (false);
+ keyscaleAttenuationComboBox2->setJustificationType (Justification::centredLeft);
+ keyscaleAttenuationComboBox2->setTextWhenNothingSelected (String::empty);
+ keyscaleAttenuationComboBox2->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
+ keyscaleAttenuationComboBox2->addItem (TRANS("-0.0"), 1);
+ keyscaleAttenuationComboBox2->addItem (TRANS("-3.0"), 2);
+ keyscaleAttenuationComboBox2->addItem (TRANS("-1.5"), 3);
+ keyscaleAttenuationComboBox2->addItem (TRANS("-6.0"), 4);
+ keyscaleAttenuationComboBox2->addListener (this);
+
+ addAndMakeVisible (keyscaleAttenuationComboBox = new ComboBox ("keyscale combo box"));
+ keyscaleAttenuationComboBox->setEditableText (false);
+ keyscaleAttenuationComboBox->setJustificationType (Justification::centredLeft);
+ keyscaleAttenuationComboBox->setTextWhenNothingSelected (String::empty);
+ keyscaleAttenuationComboBox->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
+ keyscaleAttenuationComboBox->addItem (TRANS("-0.0"), 1);
+ keyscaleAttenuationComboBox->addItem (TRANS("-3.0"), 2);
+ keyscaleAttenuationComboBox->addItem (TRANS("-1.5"), 3);
+ keyscaleAttenuationComboBox->addItem (TRANS("-6.0"), 4);
+ keyscaleAttenuationComboBox->addListener (this);
+
+ addAndMakeVisible (groupComponent4 = new GroupComponent ("new group",
+ TRANS("Channels")));
+ groupComponent4->setTextLabelPosition (Justification::centredLeft);
+ groupComponent4->setColour (GroupComponent::outlineColourId, Colour (0xff007f00));
+ groupComponent4->setColour (GroupComponent::textColourId, Colour (0xff007f00));
+
+ addAndMakeVisible (groupComponent5 = new GroupComponent ("new group",
+ TRANS("Emulator")));
+ groupComponent5->setTextLabelPosition (Justification::centredLeft);
+ groupComponent5->setColour (GroupComponent::outlineColourId, Colour (0xff007f00));
+ groupComponent5->setColour (GroupComponent::textColourId, Colour (0xff007f00));
+
+ addAndMakeVisible (emulatorSlider = new Slider ("emulator slider"));
+ emulatorSlider->setRange (0, 1, 1);
+ emulatorSlider->setSliderStyle (Slider::LinearHorizontal);
+ emulatorSlider->setTextBoxStyle (Slider::NoTextBox, true, 44, 20);
+ emulatorSlider->setColour (Slider::thumbColourId, Colour (0xff00af00));
+ emulatorSlider->setColour (Slider::trackColourId, Colour (0x7f007f00));
+ emulatorSlider->setColour (Slider::textBoxTextColourId, Colour (0xff007f00));
+ emulatorSlider->setColour (Slider::textBoxBackgroundColourId, Colours::black);
+ emulatorSlider->setColour (Slider::textBoxHighlightColourId, Colour (0xff00af00));
+ emulatorSlider->addListener (this);
+
+ addAndMakeVisible (emulatorLabel = new Label ("emulator label",
+ TRANS("DOSBox")));
+ emulatorLabel->setTooltip (TRANS("Use the OPL emulator from the DOSBox project"));
+ emulatorLabel->setFont (Font (15.00f, Font::plain));
+ emulatorLabel->setJustificationType (Justification::centredRight);
+ emulatorLabel->setEditable (false, false, false);
+ emulatorLabel->setColour (Label::textColourId, Colour (0xff007f00));
+ emulatorLabel->setColour (TextEditor::textColourId, Colours::black);
+ emulatorLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (emulatorLabel2 = new Label ("emulator label",
+ TRANS("ZDoom")));
+ emulatorLabel2->setTooltip (TRANS("Use the OPL emulator from the ZDoom project"));
+ emulatorLabel2->setFont (Font (15.00f, Font::plain));
+ emulatorLabel2->setJustificationType (Justification::centredLeft);
+ emulatorLabel2->setEditable (false, false, false);
+ emulatorLabel2->setColour (Label::textColourId, Colour (0xff007f00));
+ emulatorLabel2->setColour (TextEditor::textColourId, Colours::black);
+ emulatorLabel2->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+ addAndMakeVisible (recordButton = new ToggleButton ("record button"));
+ recordButton->setTooltip (TRANS("Start recording all register writes to a DRO file - an OPL recording file format defined by DOSBox"));
+ recordButton->setButtonText (TRANS("Record to DRO"));
+ recordButton->addListener (this);
+ recordButton->setColour (ToggleButton::textColourId, Colour (0xff007f00));
+
+ addAndMakeVisible (percussionComboBox = new ComboBox ("percussion combo box"));
+ percussionComboBox->setEditableText (false);
+ percussionComboBox->setJustificationType (Justification::centredLeft);
+ percussionComboBox->setTextWhenNothingSelected (String::empty);
+ percussionComboBox->setTextWhenNoChoicesAvailable (TRANS("(no choices)"));
+ percussionComboBox->addItem (TRANS("Off"), 1);
+ percussionComboBox->addItem (TRANS("Bass drum"), 2);
+ percussionComboBox->addItem (TRANS("Snare"), 3);
+ percussionComboBox->addItem (TRANS("Tom"), 4);
+ percussionComboBox->addItem (TRANS("Cymbal"), 5);
+ percussionComboBox->addItem (TRANS("Hi-hat"), 6);
+ percussionComboBox->addListener (this);
+
+ addAndMakeVisible (percussionLabel = new Label ("percussion label",
+ TRANS("Percussion mode")));
+ percussionLabel->setTooltip (TRANS("Enable percussion instruments instead of oscillators"));
+ percussionLabel->setFont (Font (15.00f, Font::plain));
+ percussionLabel->setJustificationType (Justification::centredLeft);
+ percussionLabel->setEditable (false, false, false);
+ percussionLabel->setColour (Label::textColourId, Colour (0xff007f00));
+ percussionLabel->setColour (TextEditor::textColourId, Colours::black);
+ percussionLabel->setColour (TextEditor::backgroundColourId, Colour (0x00000000));
+
+
+ //[UserPreSize]
+ frequencyComboBox->setColour (ComboBox::textColourId, Colour (COLOUR_MID));
+ frequencyComboBox->setColour (ComboBox::outlineColourId, Colour (COLOUR_MID));
+ frequencyComboBox->setColour (ComboBox::arrowColourId, Colour (COLOUR_MID));
+ frequencyComboBox->setColour (ComboBox::buttonColourId, Colours::black);
+ frequencyComboBox->setColour (ComboBox::backgroundColourId, Colours::black);
+
+ frequencyComboBox->addItem ("x1/2", 16); // can't use 0 :(
+ frequencyComboBox->addItem ("x1", 1);
+ frequencyComboBox->addItem ("x2", 2);
+ frequencyComboBox->addItem ("x3", 3);
+ frequencyComboBox->addItem ("x4", 4);
+ frequencyComboBox->addItem ("x5", 5);
+ frequencyComboBox->addItem ("x6", 6);
+ frequencyComboBox->addItem ("x7", 7);
+ frequencyComboBox->addItem ("x8", 8);
+ frequencyComboBox->addItem ("x9", 9);
+ frequencyComboBox->addItem ("x10", 10);
+ frequencyComboBox->addItem ("x12", 12);
+ frequencyComboBox->addItem ("x15", 15);
+
+ frequencyComboBox2->setColour (ComboBox::textColourId, Colour (COLOUR_MID));
+ frequencyComboBox2->setColour (ComboBox::outlineColourId, Colour (COLOUR_MID));
+ frequencyComboBox2->setColour (ComboBox::arrowColourId, Colour (COLOUR_MID));
+ frequencyComboBox2->setColour (ComboBox::buttonColourId, Colours::black);
+ frequencyComboBox2->setColour (ComboBox::backgroundColourId, Colours::black);
+ frequencyComboBox2->addItem ("x1/2", 16); // can't use 0 :(
+ frequencyComboBox2->addItem ("x1", 1);
+ frequencyComboBox2->addItem ("x2", 2);
+ frequencyComboBox2->addItem ("x3", 3);
+ frequencyComboBox2->addItem ("x4", 4);
+ frequencyComboBox2->addItem ("x5", 5);
+ frequencyComboBox2->addItem ("x6", 6);
+ frequencyComboBox2->addItem ("x7", 7);
+ frequencyComboBox2->addItem ("x8", 8);
+ frequencyComboBox2->addItem ("x9", 9);
+ frequencyComboBox2->addItem ("x10", 10);
+ frequencyComboBox2->addItem ("x12", 12);
+ frequencyComboBox2->addItem ("x15", 15);
+
+ velocityComboBox->setColour (ComboBox::textColourId, Colour (COLOUR_MID));
+ velocityComboBox->setColour (ComboBox::outlineColourId, Colour (COLOUR_MID));
+ velocityComboBox->setColour (ComboBox::arrowColourId, Colour (COLOUR_MID));
+ velocityComboBox->setColour (ComboBox::buttonColourId, Colours::black);
+ velocityComboBox->setColour (ComboBox::backgroundColourId, Colours::black);
+ velocityComboBox2->setColour (ComboBox::textColourId, Colour (COLOUR_MID));
+ velocityComboBox2->setColour (ComboBox::outlineColourId, Colour (COLOUR_MID));
+ velocityComboBox2->setColour (ComboBox::arrowColourId, Colour (COLOUR_MID));
+ velocityComboBox2->setColour (ComboBox::buttonColourId, Colours::black);
+ velocityComboBox2->setColour (ComboBox::backgroundColourId, Colours::black);
+
+ algorithmComboBox->setColour (ComboBox::textColourId, Colour (COLOUR_MID));
+ algorithmComboBox->setColour (ComboBox::outlineColourId, Colour (COLOUR_MID));
+ algorithmComboBox->setColour (ComboBox::arrowColourId, Colour (COLOUR_MID));
+ algorithmComboBox->setColour (ComboBox::buttonColourId, Colours::black);
+ algorithmComboBox->setColour (ComboBox::backgroundColourId, Colours::black);
+
+ keyscaleAttenuationComboBox->setColour (ComboBox::textColourId, Colour (COLOUR_MID));
+ keyscaleAttenuationComboBox->setColour (ComboBox::outlineColourId, Colour (COLOUR_MID));
+ keyscaleAttenuationComboBox->setColour (ComboBox::arrowColourId, Colour (COLOUR_MID));
+ keyscaleAttenuationComboBox->setColour (ComboBox::buttonColourId, Colours::black);
+ keyscaleAttenuationComboBox->setColour (ComboBox::backgroundColourId, Colours::black);
+ keyscaleAttenuationComboBox2->setColour (ComboBox::textColourId, Colour (COLOUR_MID));
+ keyscaleAttenuationComboBox2->setColour (ComboBox::outlineColourId, Colour (COLOUR_MID));
+ keyscaleAttenuationComboBox2->setColour (ComboBox::arrowColourId, Colour (COLOUR_MID));
+ keyscaleAttenuationComboBox2->setColour (ComboBox::buttonColourId, Colours::black);
+ keyscaleAttenuationComboBox2->setColour (ComboBox::backgroundColourId, Colours::black);
+
+ percussionComboBox->setColour(ComboBox::textColourId, Colour(COLOUR_MID));
+ percussionComboBox->setColour(ComboBox::outlineColourId, Colour(COLOUR_MID));
+ percussionComboBox->setColour(ComboBox::arrowColourId, Colour(COLOUR_MID));
+ percussionComboBox->setColour(ComboBox::buttonColourId, Colours::black);
+ percussionComboBox->setColour(ComboBox::backgroundColourId, Colours::black);
+
+ sineImageButton->setClickingTogglesState(true);
+ sineImageButton->setRepaintsOnMouseActivity(false);
+ abssineImageButton->setClickingTogglesState(true);
+ abssineImageButton->setRepaintsOnMouseActivity(false);
+ halfsineImageButton->setClickingTogglesState(true);
+ halfsineImageButton->setRepaintsOnMouseActivity(false);
+ quartersineImageButton->setClickingTogglesState(true);
+ quartersineImageButton->setRepaintsOnMouseActivity(false);
+ alternatingsineImageButton->setClickingTogglesState(true);
+ alternatingsineImageButton->setRepaintsOnMouseActivity(false);
+ camelsineImageButton->setClickingTogglesState(true);
+ camelsineImageButton->setRepaintsOnMouseActivity(false);
+ squareImageButton->setClickingTogglesState(true);
+ squareImageButton->setRepaintsOnMouseActivity(false);
+ logsawImageButton->setClickingTogglesState(true);
+ logsawImageButton->setRepaintsOnMouseActivity(false);
+
+ sineImageButton2->setClickingTogglesState(true);
+ sineImageButton2->setRepaintsOnMouseActivity(false);
+ abssineImageButton2->setClickingTogglesState(true);
+ abssineImageButton2->setRepaintsOnMouseActivity(false);
+ halfsineImageButton2->setClickingTogglesState(true);
+ halfsineImageButton2->setRepaintsOnMouseActivity(false);
+ quartersineImageButton2->setClickingTogglesState(true);
+ quartersineImageButton2->setRepaintsOnMouseActivity(false);
+ alternatingsineImageButton2->setClickingTogglesState(true);
+ alternatingsineImageButton2->setRepaintsOnMouseActivity(false);
+ camelsineImageButton2->setClickingTogglesState(true);
+ camelsineImageButton2->setRepaintsOnMouseActivity(false);
+ squareImageButton2->setClickingTogglesState(true);
+ squareImageButton2->setRepaintsOnMouseActivity(false);
+ logsawImageButton2->setClickingTogglesState(true);
+ logsawImageButton2->setRepaintsOnMouseActivity(false);
+
+ recordButton->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
+ tremoloButton->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
+ vibratoButton->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
+ keyscaleEnvButton->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
+ sustainButton->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
+ tremoloButton2->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
+ vibratoButton2->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
+ keyscaleEnvButton2->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
+ sustainButton2->setColour(TextButton::buttonColourId, Colour(COLOUR_MID));
+
+ Font fw(Font::getDefaultMonospacedFontName(), 14, Font::bold);
+ for (unsigned int i = 0; i < channels.size(); ++i)
+ {
+ Label *channel = new Label("chan label", TRANS("-"));
+ channel->setColour(Label::textColourId, Colour(COLOUR_MID));
+ channel->setJustificationType(Justification::centred);
+ addAndMakeVisible(channel);
+ channels[i] = channel;
+ }
+ //[/UserPreSize]
+
+ setSize (860, 550);
+
+
+ //[Constructor] You can add your own custom stuff here..
+ processor = ownerFilter;
+ startTimer(1000/30);
+ //[/Constructor]
+}
+
+PluginGui::~PluginGui()
+{
+ //[Destructor_pre]. You can add your own custom destruction code here..
+ //[/Destructor_pre]
+
+ groupComponent = nullptr;
+ frequencyComboBox = nullptr;
+ frequencyLabel = nullptr;
+ aSlider = nullptr;
+ aLabel = nullptr;
+ dSlider = nullptr;
+ dLabel = nullptr;
+ sSlider = nullptr;
+ dLabel2 = nullptr;
+ rSlider = nullptr;
+ rLabel = nullptr;
+ attenuationSlider = nullptr;
+ attenuationLabel = nullptr;
+ dbLabel = nullptr;
+ sineImageButton = nullptr;
+ halfsineImageButton = nullptr;
+ abssineImageButton = nullptr;
+ quartersineImageButton = nullptr;
+ waveLabel = nullptr;
+ tremoloButton = nullptr;
+ vibratoButton = nullptr;
+ sustainButton = nullptr;
+ keyscaleEnvButton = nullptr;
+ frequencyLabel2 = nullptr;
+ dbLabel2 = nullptr;
+ groupComponent2 = nullptr;
+ frequencyComboBox2 = nullptr;
+ frequencyLabel3 = nullptr;
+ aSlider2 = nullptr;
+ aLabel2 = nullptr;
+ dSlider2 = nullptr;
+ dLabel3 = nullptr;
+ sSlider2 = nullptr;
+ dLabel4 = nullptr;
+ rSlider2 = nullptr;
+ rLabel2 = nullptr;
+ attenuationSlider2 = nullptr;
+ attenuationLabel2 = nullptr;
+ dbLabel3 = nullptr;
+ sineImageButton2 = nullptr;
+ halfsineImageButton2 = nullptr;
+ abssineImageButton2 = nullptr;
+ quartersineImageButton2 = nullptr;
+ waveLabel2 = nullptr;
+ tremoloButton2 = nullptr;
+ vibratoButton2 = nullptr;
+ sustainButton2 = nullptr;
+ keyscaleEnvButton2 = nullptr;
+ frequencyLabel4 = nullptr;
+ groupComponent3 = nullptr;
+ tremoloSlider = nullptr;
+ frequencyLabel5 = nullptr;
+ dbLabel5 = nullptr;
+ vibratoSlider = nullptr;
+ frequencyLabel6 = nullptr;
+ dbLabel6 = nullptr;
+ feedbackSlider = nullptr;
+ frequencyLabel7 = nullptr;
+ velocityComboBox = nullptr;
+ attenuationLabel3 = nullptr;
+ velocityComboBox2 = nullptr;
+ attenuationLabel4 = nullptr;
+ alternatingsineImageButton = nullptr;
+ camelsineImageButton = nullptr;
+ squareImageButton = nullptr;
+ logsawImageButton = nullptr;
+ alternatingsineImageButton2 = nullptr;
+ camelsineImageButton2 = nullptr;
+ squareImageButton2 = nullptr;
+ logsawImageButton2 = nullptr;
+ algorithmComboBox = nullptr;
+ frequencyLabel8 = nullptr;
+ dbLabel4 = nullptr;
+ keyscaleAttenuationComboBox2 = nullptr;
+ keyscaleAttenuationComboBox = nullptr;
+ groupComponent4 = nullptr;
+ groupComponent5 = nullptr;
+ emulatorSlider = nullptr;
+ emulatorLabel = nullptr;
+ emulatorLabel2 = nullptr;
+ recordButton = nullptr;
+ percussionComboBox = nullptr;
+ percussionLabel = nullptr;
+
+
+ //[Destructor]. You can add your own custom destruction code here..
+ //[/Destructor]
+}
+
+//==============================================================================
+void PluginGui::paint (Graphics& g)
+{
+ //[UserPrePaint] Add your own custom painting code here..
+ //[/UserPrePaint]
+
+ g.fillAll (Colours::black);
+
+ //[UserPaint] Add your own custom painting code here..
+ //[/UserPaint]
+}
+
+void PluginGui::resized()
+{
+ //[UserPreResize] Add your own custom resize code here..
+ //[/UserPreResize]
+
+ groupComponent->setBounds (16, 80, 408, 344);
+ frequencyComboBox->setBounds (128, 152, 72, 24);
+ frequencyLabel->setBounds (32, 152, 80, 24);
+ aSlider->setBounds (40, 280, 48, 72);
+ aLabel->setBounds (40, 352, 48, 24);
+ dSlider->setBounds (104, 280, 48, 72);
+ dLabel->setBounds (104, 352, 48, 24);
+ sSlider->setBounds (168, 280, 48, 72);
+ dLabel2->setBounds (168, 352, 48, 24);
+ rSlider->setBounds (232, 280, 48, 72);
+ rLabel->setBounds (232, 352, 48, 24);
+ attenuationSlider->setBounds (312, 280, 72, 96);
+ attenuationLabel->setBounds (312, 384, 96, 24);
+ dbLabel->setBounds (376, 352, 40, 24);
+ sineImageButton->setBounds (88, 112, 34, 30);
+ halfsineImageButton->setBounds (128, 112, 34, 30);
+ abssineImageButton->setBounds (168, 112, 34, 30);
+ quartersineImageButton->setBounds (208, 112, 34, 30);
+ waveLabel->setBounds (32, 112, 48, 24);
+ tremoloButton->setBounds (144, 192, 96, 24);
+ vibratoButton->setBounds (40, 192, 96, 24);
+ sustainButton->setBounds (40, 384, 96, 24);
+ keyscaleEnvButton->setBounds (128, 384, 184, 24);
+ frequencyLabel2->setBounds (248, 184, 152, 24);
+ dbLabel2->setBounds (336, 156, 72, 16);
+ groupComponent2->setBounds (440, 80, 408, 344);
+ frequencyComboBox2->setBounds (552, 152, 72, 24);
+ frequencyLabel3->setBounds (456, 152, 80, 24);
+ aSlider2->setBounds (464, 280, 48, 72);
+ aLabel2->setBounds (464, 352, 48, 24);
+ dSlider2->setBounds (528, 280, 48, 72);
+ dLabel3->setBounds (528, 352, 48, 24);
+ sSlider2->setBounds (592, 280, 48, 72);
+ dLabel4->setBounds (592, 352, 48, 24);
+ rSlider2->setBounds (656, 280, 48, 72);
+ rLabel2->setBounds (656, 352, 48, 24);
+ attenuationSlider2->setBounds (736, 280, 72, 96);
+ attenuationLabel2->setBounds (736, 384, 96, 24);
+ dbLabel3->setBounds (800, 352, 40, 24);
+ sineImageButton2->setBounds (512, 112, 34, 30);
+ halfsineImageButton2->setBounds (552, 112, 34, 30);
+ abssineImageButton2->setBounds (592, 112, 34, 30);
+ quartersineImageButton2->setBounds (632, 112, 34, 30);
+ waveLabel2->setBounds (456, 112, 48, 24);
+ tremoloButton2->setBounds (576, 192, 96, 24);
+ vibratoButton2->setBounds (464, 192, 96, 24);
+ sustainButton2->setBounds (464, 384, 96, 24);
+ keyscaleEnvButton2->setBounds (552, 384, 184, 24);
+ frequencyLabel4->setBounds (672, 184, 152, 24);
+ groupComponent3->setBounds (16, 432, 832, 96);
+ tremoloSlider->setBounds (632, 456, 112, 24);
+ frequencyLabel5->setBounds (472, 456, 152, 24);
+ dbLabel5->setBounds (752, 448, 40, 40);
+ vibratoSlider->setBounds (632, 488, 112, 24);
+ frequencyLabel6->setBounds (472, 488, 152, 24);
+ dbLabel6->setBounds (752, 480, 47, 40);
+ feedbackSlider->setBounds (112, 232, 136, 24);
+ frequencyLabel7->setBounds (32, 232, 80, 24);
+ velocityComboBox->setBounds (336, 232, 72, 24);
+ attenuationLabel3->setBounds (272, 232, 64, 24);
+ velocityComboBox2->setBounds (760, 232, 72, 24);
+ attenuationLabel4->setBounds (696, 232, 64, 24);
+ alternatingsineImageButton->setBounds (288, 112, 34, 30);
+ camelsineImageButton->setBounds (248, 112, 34, 30);
+ squareImageButton->setBounds (328, 112, 34, 30);
+ logsawImageButton->setBounds (368, 112, 34, 30);
+ alternatingsineImageButton2->setBounds (714, 113, 34, 30);
+ camelsineImageButton2->setBounds (674, 113, 34, 30);
+ squareImageButton2->setBounds (754, 113, 34, 30);
+ logsawImageButton2->setBounds (794, 113, 34, 30);
+ algorithmComboBox->setBounds (552, 232, 112, 24);
+ frequencyLabel8->setBounds (456, 232, 80, 24);
+ dbLabel4->setBounds (760, 156, 72, 16);
+ keyscaleAttenuationComboBox2->setBounds (688, 152, 72, 24);
+ keyscaleAttenuationComboBox->setBounds (264, 152, 72, 24);
+ groupComponent4->setBounds (440, 8, 408, 64);
+ groupComponent5->setBounds (16, 8, 408, 64);
+ emulatorSlider->setBounds (200, 32, 40, 24);
+ emulatorLabel->setBounds (112, 32, 72, 24);
+ emulatorLabel2->setBounds (248, 32, 72, 24);
+ recordButton->setBounds (40, 456, 128, 24);
+ percussionComboBox->setBounds (256, 488, 112, 24);
+ percussionLabel->setBounds (40, 488, 163, 24);
+ //[UserResized] Add your own custom resize handling here..
+ for (unsigned int i = 0; i < channels.size(); ++i)
+ channels[i]->setBounds(456+44*i+4, 36, 20, 20);
+ //[/UserResized]
+}
+
+void PluginGui::comboBoxChanged (ComboBox* comboBoxThatHasChanged)
+{
+ //[UsercomboBoxChanged_Pre]
+
+ //[/UsercomboBoxChanged_Pre]
+
+ if (comboBoxThatHasChanged == frequencyComboBox)
+ {
+ //[UserComboBoxCode_frequencyComboBox] -- add your combo box handling code here..
+ int id = comboBoxThatHasChanged->getSelectedId();
+ if (id > 15) id = 0;
+ processor->setEnumParameter("Modulator Frequency Multiplier", id);
+ //[/UserComboBoxCode_frequencyComboBox]
+ }
+ else if (comboBoxThatHasChanged == frequencyComboBox2)
+ {
+ //[UserComboBoxCode_frequencyComboBox2] -- add your combo box handling code here..
+ int id = comboBoxThatHasChanged->getSelectedId();
+ if (id > 15) id = 0;
+ processor->setEnumParameter("Carrier Frequency Multiplier", id);
+ //[/UserComboBoxCode_frequencyComboBox2]
+ }
+ else if (comboBoxThatHasChanged == velocityComboBox)
+ {
+ //[UserComboBoxCode_velocityComboBox] -- add your combo box handling code here..
+ int id = comboBoxThatHasChanged->getSelectedId() - 1;
+ processor->setEnumParameter("Modulator Velocity Sensitivity", id);
+ //[/UserComboBoxCode_velocityComboBox]
+ }
+ else if (comboBoxThatHasChanged == velocityComboBox2)
+ {
+ //[UserComboBoxCode_velocityComboBox2] -- add your combo box handling code here..
+ int id = comboBoxThatHasChanged->getSelectedId() - 1;
+ processor->setEnumParameter("Carrier Velocity Sensitivity", id);
+ //[/UserComboBoxCode_velocityComboBox2]
+ }
+ else if (comboBoxThatHasChanged == algorithmComboBox)
+ {
+ //[UserComboBoxCode_algorithmComboBox] -- add your combo box handling code here..
+ int id = comboBoxThatHasChanged->getSelectedId() - 1;
+ processor->setEnumParameter("Algorithm", id);
+ //[/UserComboBoxCode_algorithmComboBox]
+ }
+ else if (comboBoxThatHasChanged == keyscaleAttenuationComboBox2)
+ {
+ //[UserComboBoxCode_keyscaleAttenuationComboBox2] -- add your combo box handling code here..
+ int id = comboBoxThatHasChanged->getSelectedId() - 1;
+ processor->setEnumParameter("Carrier Keyscale Level", id);
+ //[/UserComboBoxCode_keyscaleAttenuationComboBox2]
+ }
+ else if (comboBoxThatHasChanged == keyscaleAttenuationComboBox)
+ {
+ //[UserComboBoxCode_keyscaleAttenuationComboBox] -- add your combo box handling code here..
+ int id = comboBoxThatHasChanged->getSelectedId() - 1;
+ processor->setEnumParameter("Modulator Keyscale Level", id);
+ //[/UserComboBoxCode_keyscaleAttenuationComboBox]
+ }
+ else if (comboBoxThatHasChanged == percussionComboBox)
+ {
+ //[UserComboBoxCode_percussionComboBox] -- add your combo box handling code here..
+ int id = comboBoxThatHasChanged->getSelectedId() - 1;
+ processor->setEnumParameter("Percussion Mode", id);
+ //[/UserComboBoxCode_percussionComboBox]
+ }
+
+ //[UsercomboBoxChanged_Post]
+ //[/UsercomboBoxChanged_Post]
+}
+
+void PluginGui::sliderValueChanged (Slider* sliderThatWasMoved)
+{
+ //[UsersliderValueChanged_Pre]
+ //[/UsersliderValueChanged_Pre]
+
+ if (sliderThatWasMoved == aSlider)
+ {
+ //[UserSliderCode_aSlider] -- add your slider handling code here..
+ processor->setIntParameter("Modulator Attack", (int)sliderThatWasMoved->getValue());
+ //[/UserSliderCode_aSlider]
+ }
+ else if (sliderThatWasMoved == dSlider)
+ {
+ //[UserSliderCode_dSlider] -- add your slider handling code here..
+ processor->setIntParameter("Modulator Decay", (int)sliderThatWasMoved->getValue());
+ //[/UserSliderCode_dSlider]
+ }
+ else if (sliderThatWasMoved == sSlider)
+ {
+ //[UserSliderCode_sSlider] -- add your slider handling code here..
+ processor->setIntParameter("Modulator Sustain Level", (int)sliderThatWasMoved->getValue());
+ //[/UserSliderCode_sSlider]
+ }
+ else if (sliderThatWasMoved == rSlider)
+ {
+ //[UserSliderCode_rSlider] -- add your slider handling code here..
+ processor->setIntParameter("Modulator Release", (int)sliderThatWasMoved->getValue());
+ //[/UserSliderCode_rSlider]
+ }
+ else if (sliderThatWasMoved == attenuationSlider)
+ {
+ //[UserSliderCode_attenuationSlider] -- add your slider handling code here..
+ processor->setEnumParameter("Modulator Attenuation", -(int)(sliderThatWasMoved->getValue()/0.75));
+ //[/UserSliderCode_attenuationSlider]
+ }
+ else if (sliderThatWasMoved == aSlider2)
+ {
+ //[UserSliderCode_aSlider2] -- add your slider handling code here..
+ processor->setIntParameter("Carrier Attack", (int)sliderThatWasMoved->getValue());
+ //[/UserSliderCode_aSlider2]
+ }
+ else if (sliderThatWasMoved == dSlider2)
+ {
+ //[UserSliderCode_dSlider2] -- add your slider handling code here..
+ processor->setIntParameter("Carrier Decay", (int)sliderThatWasMoved->getValue());
+ //[/UserSliderCode_dSlider2]
+ }
+ else if (sliderThatWasMoved == sSlider2)
+ {
+ //[UserSliderCode_sSlider2] -- add your slider handling code here..
+ processor->setIntParameter("Carrier Sustain Level", (int)sliderThatWasMoved->getValue());
+ //[/UserSliderCode_sSlider2]
+ }
+ else if (sliderThatWasMoved == rSlider2)
+ {
+ //[UserSliderCode_rSlider2] -- add your slider handling code here..
+ processor->setIntParameter("Carrier Release", (int)sliderThatWasMoved->getValue());
+ //[/UserSliderCode_rSlider2]
+ }
+ else if (sliderThatWasMoved == attenuationSlider2)
+ {
+ //[UserSliderCode_attenuationSlider2] -- add your slider handling code here..
+ processor->setEnumParameter("Carrier Attenuation", -(int)(sliderThatWasMoved->getValue()/0.75));
+ //[/UserSliderCode_attenuationSlider2]
+ }
+ 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]
+ }
+ else if (sliderThatWasMoved == emulatorSlider)
+ {
+ //[UserSliderCode_emulatorSlider] -- add your slider handling code here..
+ processor->setEnumParameter("Emulator", sliderThatWasMoved->getValue() < 0.5 ? 0 : 1);
+ //[/UserSliderCode_emulatorSlider]
+ }
+
+ //[UsersliderValueChanged_Post]
+ //[/UsersliderValueChanged_Post]
+}
+
+void PluginGui::buttonClicked (Button* buttonThatWasClicked)
+{
+ //[UserbuttonClicked_Pre]
+ //[/UserbuttonClicked_Pre]
+
+ if (buttonThatWasClicked == sineImageButton)
+ {
+ //[UserButtonCode_sineImageButton] -- add your button handler code here..
+ processor->setEnumParameter("Modulator Wave", 0);
+ //[/UserButtonCode_sineImageButton]
+ }
+ else if (buttonThatWasClicked == halfsineImageButton)
+ {
+ //[UserButtonCode_halfsineImageButton] -- add your button handler code here..
+ processor->setEnumParameter("Modulator Wave", 1);
+ //[/UserButtonCode_halfsineImageButton]
+ }
+ else if (buttonThatWasClicked == abssineImageButton)
+ {
+ //[UserButtonCode_abssineImageButton] -- add your button handler code here..
+ processor->setEnumParameter("Modulator Wave", 2);
+ //[/UserButtonCode_abssineImageButton]
+ }
+ else if (buttonThatWasClicked == quartersineImageButton)
+ {
+ //[UserButtonCode_quartersineImageButton] -- add your button handler code here..
+ processor->setEnumParameter("Modulator Wave", 3);
+ //[/UserButtonCode_quartersineImageButton]
+ }
+ else if (buttonThatWasClicked == tremoloButton)
+ {
+ //[UserButtonCode_tremoloButton] -- add your button handler code here..
+ processor->setEnumParameter("Modulator Tremolo", buttonThatWasClicked->getToggleState() ? 1 : 0);
+ //[/UserButtonCode_tremoloButton]
+ }
+ else if (buttonThatWasClicked == vibratoButton)
+ {
+ //[UserButtonCode_vibratoButton] -- add your button handler code here..
+ processor->setEnumParameter("Modulator Vibrato", buttonThatWasClicked->getToggleState() ? 1 : 0);
+ //[/UserButtonCode_vibratoButton]
+ }
+ else if (buttonThatWasClicked == sustainButton)
+ {
+ //[UserButtonCode_sustainButton] -- add your button handler code here..
+ processor->setEnumParameter("Modulator Sustain", buttonThatWasClicked->getToggleState() ? 1 : 0);
+ //[/UserButtonCode_sustainButton]
+ }
+ else if (buttonThatWasClicked == keyscaleEnvButton)
+ {
+ //[UserButtonCode_keyscaleEnvButton] -- add your button handler code here..
+ processor->setEnumParameter("Modulator Keyscale Rate", buttonThatWasClicked->getToggleState() ? 1 : 0);
+ //[/UserButtonCode_keyscaleEnvButton]
+ }
+ else if (buttonThatWasClicked == sineImageButton2)
+ {
+ //[UserButtonCode_sineImageButton2] -- add your button handler code here..
+ processor->setEnumParameter("Carrier Wave", 0);
+ //[/UserButtonCode_sineImageButton2]
+ }
+ else if (buttonThatWasClicked == halfsineImageButton2)
+ {
+ //[UserButtonCode_halfsineImageButton2] -- add your button handler code here..
+ processor->setEnumParameter("Carrier Wave", 1);
+ //[/UserButtonCode_halfsineImageButton2]
+ }
+ else if (buttonThatWasClicked == abssineImageButton2)
+ {
+ //[UserButtonCode_abssineImageButton2] -- add your button handler code here..
+ processor->setEnumParameter("Carrier Wave", 2);
+ //[/UserButtonCode_abssineImageButton2]
+ }
+ else if (buttonThatWasClicked == quartersineImageButton2)
+ {
+ //[UserButtonCode_quartersineImageButton2] -- add your button handler code here..
+ processor->setEnumParameter("Carrier Wave", 3);
+ //[/UserButtonCode_quartersineImageButton2]
+ }
+ else if (buttonThatWasClicked == tremoloButton2)
+ {
+ //[UserButtonCode_tremoloButton2] -- add your button handler code here..
+ processor->setEnumParameter("Carrier Tremolo", buttonThatWasClicked->getToggleState() ? 1 : 0);
+ //[/UserButtonCode_tremoloButton2]
+ }
+ else if (buttonThatWasClicked == vibratoButton2)
+ {
+ //[UserButtonCode_vibratoButton2] -- add your button handler code here..
+ processor->setEnumParameter("Carrier Vibrato", buttonThatWasClicked->getToggleState() ? 1 : 0);
+ //[/UserButtonCode_vibratoButton2]
+ }
+ else if (buttonThatWasClicked == sustainButton2)
+ {
+ //[UserButtonCode_sustainButton2] -- add your button handler code here..
+ processor->setEnumParameter("Carrier Sustain", buttonThatWasClicked->getToggleState() ? 1 : 0);
+ //[/UserButtonCode_sustainButton2]
+ }
+ else if (buttonThatWasClicked == keyscaleEnvButton2)
+ {
+ //[UserButtonCode_keyscaleEnvButton2] -- add your button handler code here..
+ processor->setEnumParameter("Carrier Keyscale Rate", buttonThatWasClicked->getToggleState() ? 1 : 0);
+ //[/UserButtonCode_keyscaleEnvButton2]
+ }
+ else if (buttonThatWasClicked == alternatingsineImageButton)
+ {
+ //[UserButtonCode_alternatingsineImageButton] -- add your button handler code here..
+ processor->setEnumParameter("Modulator Wave", 4);
+ //[/UserButtonCode_alternatingsineImageButton]
+ }
+ else if (buttonThatWasClicked == camelsineImageButton)
+ {
+ //[UserButtonCode_camelsineImageButton] -- add your button handler code here..
+ processor->setEnumParameter("Modulator Wave", 5);
+ //[/UserButtonCode_camelsineImageButton]
+ }
+ else if (buttonThatWasClicked == squareImageButton)
+ {
+ //[UserButtonCode_squareImageButton] -- add your button handler code here..
+ processor->setEnumParameter("Modulator Wave", 6);
+ //[/UserButtonCode_squareImageButton]
+ }
+ else if (buttonThatWasClicked == logsawImageButton)
+ {
+ //[UserButtonCode_logsawImageButton] -- add your button handler code here..
+ processor->setEnumParameter("Modulator Wave", 7);
+ //[/UserButtonCode_logsawImageButton]
+ }
+ else if (buttonThatWasClicked == alternatingsineImageButton2)
+ {
+ //[UserButtonCode_alternatingsineImageButton2] -- add your button handler code here..
+ processor->setEnumParameter("Carrier Wave", 4);
+ //[/UserButtonCode_alternatingsineImageButton2]
+ }
+ else if (buttonThatWasClicked == camelsineImageButton2)
+ {
+ //[UserButtonCode_camelsineImageButton2] -- add your button handler code here..
+ processor->setEnumParameter("Carrier Wave", 5);
+ //[/UserButtonCode_camelsineImageButton2]
+ }
+ else if (buttonThatWasClicked == squareImageButton2)
+ {
+ //[UserButtonCode_squareImageButton2] -- add your button handler code here..
+ processor->setEnumParameter("Carrier Wave", 6);
+ //[/UserButtonCode_squareImageButton2]
+ }
+ else if (buttonThatWasClicked == logsawImageButton2)
+ {
+ //[UserButtonCode_logsawImageButton2] -- add your button handler code here..
+ processor->setEnumParameter("Carrier Wave", 7);
+ //[/UserButtonCode_logsawImageButton2]
+ }
+ else if (buttonThatWasClicked == recordButton)
+ {
+ //[UserButtonCode_recordButton] -- add your button handler code here..
+ recordButton->setToggleState(false, dontSendNotification);
+ if (!processor->isAnyInstanceRecording()) {
+ WildcardFileFilter wildcardFilter ("*.dro", String::empty, "DRO files");
+ FileBrowserComponent browser (FileBrowserComponent::saveMode,
+ File::nonexistent,
+ &wildcardFilter,
+ nullptr);
+ FileChooserDialogBox dialogBox ("Record to",
+ "Specify DRO output file",
+ browser,
+ true,
+ Colours::darkgreen);
+ if (dialogBox.show())
+ {
+ File selectedFile = browser.getSelectedFile(0);
+ processor->startRecording(&selectedFile);
+ setRecordButtonState(true);
+ }
+ } else {
+ setRecordButtonState(false);
+ processor->stopRecording();
+ }
+ //[/UserButtonCode_recordButton]
+ }
+
+ //[UserbuttonClicked_Post]
+ //[/UserbuttonClicked_Post]
+}
+
+
+
+//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
+ //==============================================================================
+ // These methods implement the FileDragAndDropTarget interface, and allow our component
+ // to accept drag-and-drop of files..
+
+ bool PluginGui::isInterestedInFileDrag (const StringArray& files)
+ {
+ return 1 == files.size() && (
+ files[0].toLowerCase().endsWith(".sbi")
+ || files[0].toLowerCase().endsWith(".sb2")
+ || files[0].toLowerCase().endsWith(".sb0")
+ );
+ }
+
+ void PluginGui::fileDragEnter (const StringArray& files, int x, int y)
+ {
+ }
+
+ void PluginGui::fileDragMove (const StringArray& files, int x, int y)
+ {
+ }
+
+ void PluginGui::fileDragExit (const StringArray& files)
+ {
+ }
+
+ void PluginGui::filesDropped (const StringArray& files, int x, int y)
+ {
+ if (isInterestedInFileDrag(files)) {
+ processor->loadInstrumentFromFile(files[0]);
+ }
+ }
+
+ void PluginGui::timerCallback()
+ {
+ for (int i = 0; i < Hiopl::CHANNELS; ++i) {
+ channels[i]->setText(processor->getChannelEnvelopeStage(i + 1), NotificationType::dontSendNotification);
+ }
+ //channels[i]->setState(processor->isChannelActive(i+1) ? Button::buttonDown : Button::buttonNormal);
+ }
+//[/MiscUserCode]
+
+
+//==============================================================================
+#if 0
+/* -- Introjucer information section --
+
+ This is where the Introjucer stores the metadata that describe this GUI layout, so
+ make changes in here at your peril!
+
+BEGIN_JUCER_METADATA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+END_JUCER_METADATA
+*/
+#endif
+
+//==============================================================================
+// Binary resources - be careful not to edit any of these sections!
+
+// JUCER_RESOURCE: full_sine_png, 203, "../img/full_sine.png"
+static const unsigned char resource_PluginGui_full_sine_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,146,73,68,65,84,88,133,237,151,81,14,64,
+48,16,68,183,226,94,110,225,18,110,230,146,252,116,35,153,166,97,219,21,131,125,63,66,144,241,76,75,147,136,108,66,192,240,116,0,101,60,61,99,133,253,249,158,32,47,48,162,38,208,64,237,120,39,52,70,146,
+224,168,185,250,196,206,102,104,140,68,16,228,232,72,235,59,119,234,10,141,145,8,130,148,51,235,212,120,39,235,117,75,222,230,110,209,24,41,103,86,43,78,163,141,198,72,4,65,250,59,162,116,126,181,105,
+140,68,16,196,175,35,74,227,191,238,135,141,40,198,245,208,15,140,24,161,49,178,3,63,99,23,114,126,178,233,88,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
+
+const char* PluginGui::full_sine_png = (const char*) resource_PluginGui_full_sine_png;
+const int PluginGui::full_sine_pngSize = 203;
+
+// JUCER_RESOURCE: half_sine_png, 179, "../img/half_sine.png"
+static const unsigned char resource_PluginGui_half_sine_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,122,73,68,65,84,88,133,237,148,65,10,128,
+32,20,5,191,209,189,186,69,135,236,22,157,172,22,33,193,72,20,102,248,130,55,155,40,50,198,73,77,17,177,133,0,67,111,129,204,120,251,198,130,251,249,27,145,31,20,201,37,88,224,234,249,75,100,138,164,224,
+174,121,58,227,198,101,100,138,88,132,156,107,164,246,159,55,90,43,50,69,44,66,202,147,117,170,252,82,237,184,245,184,200,20,41,79,214,78,200,20,177,8,177,8,177,8,177,8,177,8,177,8,217,1,254,115,12,122,
+78,109,41,249,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
+
+const char* PluginGui::half_sine_png = (const char*) resource_PluginGui_half_sine_png;
+const int PluginGui::half_sine_pngSize = 179;
+
+// JUCER_RESOURCE: abs_sine_png, 181, "../img/abs_sine.png"
+static const unsigned char resource_PluginGui_abs_sine_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,124,73,68,65,84,88,133,237,148,81,10,128,
+32,16,5,215,232,94,221,162,67,118,201,250,81,130,17,209,182,192,13,222,252,21,62,153,125,150,201,204,78,11,192,50,91,160,176,118,87,28,120,222,7,119,126,152,251,65,35,101,34,78,210,122,255,50,23,166,145,
+100,252,107,122,19,183,214,121,115,153,48,141,72,132,220,223,200,232,25,147,143,114,97,26,145,8,169,111,214,205,185,147,55,151,9,211,72,125,179,78,34,76,35,18,33,18,33,18,33,18,33,18,33,18,33,23,197,62,
+17,185,230,123,254,103,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
+
+const char* PluginGui::abs_sine_png = (const char*) resource_PluginGui_abs_sine_png;
+const int PluginGui::abs_sine_pngSize = 181;
+
+// JUCER_RESOURCE: quarter_sine_png, 181, "../img/quarter_sine.png"
+static const unsigned char resource_PluginGui_quarter_sine_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,124,73,68,65,84,88,133,237,150,81,10,
+128,32,16,68,215,232,94,221,162,67,118,139,78,150,31,41,209,196,162,174,31,205,199,60,8,177,28,120,77,33,38,51,187,140,128,229,111,129,74,91,228,40,215,40,131,57,154,70,86,247,73,164,133,137,28,113,35,
+245,141,118,152,183,136,230,10,52,141,72,4,121,254,17,252,198,189,68,115,0,77,35,18,65,190,251,200,230,172,244,238,207,230,206,123,160,105,36,153,206,35,111,36,130,72,4,145,8,34,17,68,34,136,68,144,12,
+123,138,13,78,65,207,81,74,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
+
+const char* PluginGui::quarter_sine_png = (const char*) resource_PluginGui_quarter_sine_png;
+const int PluginGui::quarter_sine_pngSize = 181;
+
+// JUCER_RESOURCE: camel_sine_png, 174, "../img/camel_sine.png"
+static const unsigned char resource_PluginGui_camel_sine_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,117,73,68,65,84,88,133,237,148,209,9,192,
+32,12,68,99,233,94,221,162,67,118,139,78,86,63,218,80,56,41,129,40,245,62,238,129,136,6,225,229,132,20,51,187,140,128,101,182,128,243,45,114,60,43,91,31,38,242,51,107,115,227,93,238,201,115,18,154,68,
+36,130,20,243,57,18,253,117,111,61,128,38,17,137,32,18,65,218,201,186,5,47,122,235,200,121,111,52,137,188,115,100,50,52,137,72,4,145,8,34,17,68,34,136,68,16,137,32,21,146,46,14,97,109,79,27,36,0,0,0,0,
+73,69,78,68,174,66,96,130,0,0};
+
+const char* PluginGui::camel_sine_png = (const char*) resource_PluginGui_camel_sine_png;
+const int PluginGui::camel_sine_pngSize = 174;
+
+// JUCER_RESOURCE: alternating_sine_png, 197, "../img/alternating_sine.png"
+static const unsigned char resource_PluginGui_alternating_sine_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,140,73,68,65,84,88,133,99,100,96,
+96,248,207,48,8,0,211,64,59,0,6,112,59,100,21,20,15,184,67,232,12,88,48,68,96,161,16,134,131,79,35,48,104,66,100,212,33,232,128,145,1,86,142,16,74,11,52,78,43,131,38,68,70,29,130,14,70,29,130,14,48,75,
+86,123,2,58,112,201,103,67,233,169,36,186,224,32,132,26,52,33,130,40,71,8,1,26,151,51,131,38,68,70,29,130,14,70,29,130,14,136,207,53,48,64,163,22,220,160,9,145,81,135,160,3,210,211,8,12,80,185,197,54,
+12,66,132,202,96,208,132,8,0,67,200,18,200,95,246,147,104,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
+
+const char* PluginGui::alternating_sine_png = (const char*) resource_PluginGui_alternating_sine_png;
+const int PluginGui::alternating_sine_pngSize = 197;
+
+// JUCER_RESOURCE: square_png, 179, "../img/square.png"
+static const unsigned char resource_PluginGui_square_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,122,73,68,65,84,88,133,237,150,177,17,128,48,
+12,3,29,142,189,216,130,37,216,44,75,66,99,83,40,85,34,238,80,161,111,146,198,190,143,10,59,45,34,238,16,96,251,91,160,216,223,91,39,59,157,92,185,96,34,197,236,203,216,36,19,153,68,44,130,88,4,177,8,
+98,17,100,156,172,199,98,167,217,186,43,207,156,228,50,137,180,96,255,35,181,107,86,119,148,90,34,22,65,44,130,88,4,177,8,50,238,154,85,200,223,188,76,34,252,174,249,8,153,68,30,246,154,9,40,60,195,35,
+102,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
+
+const char* PluginGui::square_png = (const char*) resource_PluginGui_square_png;
+const int PluginGui::square_pngSize = 179;
+
+// JUCER_RESOURCE: logarithmic_saw_png, 206, "../img/logarithmic_saw.png"
+static const unsigned char resource_PluginGui_logarithmic_saw_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,34,0,0,0,30,8,6,0,0,0,73,255,204,20,0,0,0,149,73,68,65,84,88,133,237,150,81,
+10,128,32,16,68,215,232,94,221,194,75,116,158,46,225,37,235,103,37,24,19,139,218,118,64,31,136,172,32,12,15,87,13,34,178,11,1,147,119,128,204,25,36,233,112,15,226,204,8,130,148,65,156,206,10,177,17,39,
+104,130,204,197,74,212,57,65,109,12,177,145,12,154,193,245,143,33,54,178,64,189,65,125,247,142,193,125,200,170,179,26,166,49,18,196,234,63,210,58,91,208,149,52,70,234,93,243,150,134,1,164,3,35,72,237,
+94,82,104,140,140,32,200,255,65,162,92,118,78,199,70,42,208,4,177,123,107,30,66,99,228,0,184,114,16,107,149,79,109,141,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
+
+const char* PluginGui::logarithmic_saw_png = (const char*) resource_PluginGui_logarithmic_saw_png;
+const int PluginGui::logarithmic_saw_pngSize = 206;
+
+// JUCER_RESOURCE: channeloff_png, 414, "../img/channeloff.png"
+static const unsigned char resource_PluginGui_channeloff_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,16,0,0,0,16,8,6,0,0,0,31,243,255,97,0,0,0,6,98,75,71,68,0,0,0,0,0,0,249,67,187,127,
+0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,7,116,73,77,69,7,222,8,25,20,6,56,156,246,144,159,0,0,0,29,105,84,88,116,67,111,109,109,101,110,116,0,0,0,0,0,67,114,101,97,116,101,100,32,
+119,105,116,104,32,71,73,77,80,100,46,101,7,0,0,1,2,73,68,65,84,56,203,165,211,61,78,66,65,20,5,224,143,193,82,119,224,62,104,40,166,196,194,202,10,66,65,137,149,75,120,121,193,21,216,104,108,164,32,178,
+128,183,1,94,66,67,66,172,172,140,27,176,178,192,202,70,139,55,26,2,138,2,39,153,102,230,220,159,185,231,220,154,85,100,14,113,138,46,154,233,118,138,17,10,185,183,101,122,88,9,110,99,129,11,20,104,164,
+83,164,187,69,226,252,128,204,64,230,67,166,239,55,100,250,137,51,176,86,185,122,104,249,11,153,86,226,182,161,150,254,188,192,185,220,141,255,160,234,242,26,71,117,209,25,142,229,27,90,95,69,105,46,58,
+193,107,72,211,30,218,30,67,116,67,146,106,178,67,130,9,154,193,158,8,201,36,113,135,216,136,105,72,14,235,237,144,160,135,81,248,118,92,182,133,10,21,183,129,162,174,244,46,122,194,157,104,166,244,252,
+167,145,24,163,35,247,80,79,186,62,138,14,112,43,122,81,154,111,168,60,198,165,220,85,229,196,245,101,186,199,44,233,60,89,26,88,47,181,221,145,27,127,133,212,246,93,231,79,44,229,73,181,37,137,229,213,
+0,0,0,0,73,69,78,68,174,66,96,130,0,0};
+
+const char* PluginGui::channeloff_png = (const char*) resource_PluginGui_channeloff_png;
+const int PluginGui::channeloff_pngSize = 414;
+
+// JUCER_RESOURCE: channelon_png, 326, "../img/channelon.png"
+static const unsigned char resource_PluginGui_channelon_png[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,16,0,0,0,16,8,6,0,0,0,31,243,255,97,0,0,0,6,98,75,71,68,0,0,0,0,0,0,249,67,187,127,
+0,0,0,9,112,72,89,115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,7,116,73,77,69,7,222,8,25,20,6,39,17,254,157,106,0,0,0,29,105,84,88,116,67,111,109,109,101,110,116,0,0,0,0,0,67,114,101,97,116,101,100,32,
+119,105,116,104,32,71,73,77,80,100,46,101,7,0,0,0,170,73,68,65,84,56,203,173,147,177,13,194,48,16,69,159,143,148,176,81,20,101,129,84,84,68,217,5,89,176,0,204,16,193,0,30,0,69,202,8,169,88,131,12,64,145,
+139,176,82,64,116,230,117,182,252,206,242,249,159,99,201,145,45,80,1,13,144,235,110,15,180,64,192,51,198,199,221,66,62,0,55,190,83,227,185,207,139,77,36,159,128,11,191,217,83,146,209,241,248,20,152,110,
+94,35,207,20,148,60,233,24,156,190,249,133,141,157,104,195,172,84,162,221,182,210,72,244,85,22,114,33,17,209,144,88,233,69,19,102,165,21,32,36,20,8,162,217,174,13,114,141,103,156,146,216,49,80,146,1,197,
+74,249,140,231,250,151,97,114,169,227,252,6,230,208,38,246,228,75,209,233,0,0,0,0,73,69,78,68,174,66,96,130,0,0};
+
+const char* PluginGui::channelon_png = (const char*) resource_PluginGui_channelon_png;
+const int PluginGui::channelon_pngSize = 326;
+
+
+//[EndFile] You can add extra defines here...
+//[/EndFile]
diff --git a/Source/PluginGui.h b/Source/PluginGui.h
index 8d19093..d8c2aac 100644
--- a/Source/PluginGui.h
+++ b/Source/PluginGui.h
@@ -1,193 +1,193 @@
-/*
- ==============================================================================
-
- This is an automatically generated GUI class created by the Introjucer!
-
- 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 Introjucer version: 3.1.0
-
- ------------------------------------------------------------------------------
-
- The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions"
- Copyright 2004-13 by Raw Material Software Ltd.
-
- ==============================================================================
-*/
-
-#ifndef __JUCE_HEADER_450C07F5C14097B8__
-#define __JUCE_HEADER_450C07F5C14097B8__
-
-//[Headers] -- You can add your own extra header files here --
-#include
-#include "JuceHeader.h"
-#include "PluginProcessor.h"
-//[/Headers]
-
-
-
-//==============================================================================
-/**
- //[Comments]
- This is a GUI for the OPL2 VST plugin, created in Juce.
- //[/Comments]
-*/
-class PluginGui : public AudioProcessorEditor,
- public FileDragAndDropTarget,
- public DragAndDropContainer,
- public Timer,
- public ComboBoxListener,
- public SliderListener,
- public ButtonListener
-{
-public:
- //==============================================================================
- PluginGui (JuceOplvstiAudioProcessor* ownerFilter);
- ~PluginGui();
-
- //==============================================================================
- //[UserMethods] -- You can add your own custom methods in this section.
- void updateFromParameters();
- bool isInterestedInFileDrag (const StringArray& files);
- void fileDragEnter (const StringArray& files, int x, int y);
- void fileDragMove (const StringArray& files, int x, int y);
- void fileDragExit (const StringArray& files);
- void filesDropped (const StringArray& files, int x, int y);
- void timerCallback();
- void setRecordButtonState(bool recording);
- //[/UserMethods]
-
- void paint (Graphics& g);
- void resized();
- void comboBoxChanged (ComboBox* comboBoxThatHasChanged);
- void sliderValueChanged (Slider* sliderThatWasMoved);
- void buttonClicked (Button* buttonThatWasClicked);
-
- // Binary resources:
- static const char* full_sine_png;
- static const int full_sine_pngSize;
- static const char* half_sine_png;
- static const int half_sine_pngSize;
- static const char* abs_sine_png;
- static const int abs_sine_pngSize;
- static const char* quarter_sine_png;
- static const int quarter_sine_pngSize;
- static const char* camel_sine_png;
- static const int camel_sine_pngSize;
- static const char* alternating_sine_png;
- static const int alternating_sine_pngSize;
- static const char* square_png;
- static const int square_pngSize;
- static const char* logarithmic_saw_png;
- static const int logarithmic_saw_pngSize;
- static const char* channeloff_png;
- static const int channeloff_pngSize;
- static const char* channelon_png;
- static const int channelon_pngSize;
-
-
-private:
- //[UserVariables] -- You can add your own custom variables in this section.
- static const uint32 COLOUR_MID = 0xff007f00;
- static const uint32 COLOUR_RECORDING = 0xffff0000;
- JuceOplvstiAudioProcessor* processor;
- std::array, Hiopl::CHANNELS> channels;
- TooltipWindow tooltipWindow;
- //[/UserVariables]
-
- //==============================================================================
- ScopedPointer groupComponent;
- ScopedPointer frequencyComboBox;
- ScopedPointer