| 
							- /*
 -  * Segment Juice Plugin
 -  * Copyright (C) 2014 Andre Sklenar <andre.sklenar@gmail.com>, www.juicelab.cz
 -  *
 -  * This program is free software; you can redistribute it and/or
 -  * modify it under the terms of the GNU General Public License as
 -  * published by the Free Software Foundation; either version 2 of
 -  * the License, or any later version.
 -  *
 -  * This program is distributed in the hope that it will be useful,
 -  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 -  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 -  * GNU General Public License for more details.
 -  *
 -  * For a full copy of the GNU General Public License see the doc/GPL.txt file.
 -  */
 - 
 - #include "SegmentJuiceUI.hpp"
 - 
 - using DGL::Point;
 - 
 - START_NAMESPACE_DISTRHO
 - 
 - // -----------------------------------------------------------------------
 - 
 - SegmentJuiceUI::SegmentJuiceUI()
 -     : UI(),
 -       fAboutWindow(this)
 - {
 -     // background
 -     fImgBackground = Image(SegmentJuiceArtwork::backgroundData, SegmentJuiceArtwork::backgroundWidth, SegmentJuiceArtwork::backgroundHeight, GL_BGR);
 - 
 -     // about
 -     Image imageAbout(SegmentJuiceArtwork::aboutData, SegmentJuiceArtwork::aboutWidth, SegmentJuiceArtwork::aboutHeight, GL_BGR);
 -     fAboutWindow.setImage(imageAbout);
 - 
 -     // knobs
 -     Image knobImage(SegmentJuiceArtwork::knobData, SegmentJuiceArtwork::knobWidth, SegmentJuiceArtwork::knobHeight);
 - 
 -     // knobs2
 -     Image knobImage2(SegmentJuiceArtwork::knob2Data, SegmentJuiceArtwork::knob2Width, SegmentJuiceArtwork::knob2Height);
 - 
 -     // knob Wave1
 -     fKnobWave1 = new ImageKnob(this, knobImage);
 -     fKnobWave1->setAbsolutePos(446, 79);
 -     fKnobWave1->setRange(1.0f, 4.0f);
 -     fKnobWave1->setValue(0.3f);
 -     fKnobWave1->setRotationAngle(270);
 -     fKnobWave1->setCallback(this);
 - 
 -     // knob Wave2
 -     fKnobWave2 = new ImageKnob(this, knobImage);
 -     fKnobWave2->setAbsolutePos(446, 139);
 -     fKnobWave2->setRange(1.0f, 4.0f);
 -     fKnobWave2->setValue(3.0f);
 -     fKnobWave2->setRotationAngle(270);
 -     fKnobWave2->setCallback(this);
 - 
 -     // knob Wave3
 -     fKnobWave3 = new ImageKnob(this, knobImage);
 -     fKnobWave3->setAbsolutePos(446, 199);
 -     fKnobWave3->setRange(1.0f, 4.0f);
 -     fKnobWave3->setValue(3.0f);
 -     fKnobWave3->setRotationAngle(270);
 -     fKnobWave3->setCallback(this);
 - 
 -     // knob Wave4
 -     fKnobWave4 = new ImageKnob(this, knobImage);
 -     fKnobWave4->setAbsolutePos(446, 259);
 -     fKnobWave4->setRange(1.0f, 4.0f);
 -     fKnobWave4->setValue(3.0f);
 -     fKnobWave4->setRotationAngle(270);
 -     fKnobWave4->setCallback(this);
 - 
 -     // knob Wave5
 -     fKnobWave5 = new ImageKnob(this, knobImage);
 -     fKnobWave5->setAbsolutePos(446, 319);
 -     fKnobWave5->setRange(1.0f, 4.0f);
 -     fKnobWave5->setValue(3.0f);
 -     fKnobWave5->setRotationAngle(270);
 -     fKnobWave5->setCallback(this);
 - 
 -     // knob Wave6
 -     fKnobWave6 = new ImageKnob(this, knobImage);
 -     fKnobWave6->setAbsolutePos(446, 379);
 -     fKnobWave6->setRange(1.0f, 4.0f);
 -     fKnobWave6->setValue(3.0f);
 -     fKnobWave6->setRotationAngle(270);
 -     fKnobWave6->setCallback(this);
 - 
 -     // knob FM1
 -     fKnobFM1 = new ImageKnob(this, knobImage);
 -     fKnobFM1->setAbsolutePos(510, 79);
 -     fKnobFM1->setRange(0.0f, 1.0f);
 -     fKnobFM1->setValue(0.5f);
 -     fKnobFM1->setRotationAngle(270);
 -     fKnobFM1->setCallback(this);
 - 
 -     // knob FM2
 -     fKnobFM2 = new ImageKnob(this, knobImage);
 -     fKnobFM2->setAbsolutePos(510, 139);
 -     fKnobFM2->setRange(0.0f, 1.0f);
 -     fKnobFM2->setValue(0.5f);
 -     fKnobFM2->setRotationAngle(270);
 -     fKnobFM2->setCallback(this);
 - 
 -     // knob FM3
 -     fKnobFM3 = new ImageKnob(this, knobImage);
 -     fKnobFM3->setAbsolutePos(510, 199);
 -     fKnobFM3->setRange(0.0f, 1.0f);
 -     fKnobFM3->setValue(0.5f);
 -     fKnobFM3->setRotationAngle(270);
 -     fKnobFM3->setCallback(this);
 - 
 -     // knob FM4
 -     fKnobFM4 = new ImageKnob(this, knobImage);
 -     fKnobFM4->setAbsolutePos(510, 259);
 -     fKnobFM4->setRange(0.0f, 1.0f);
 -     fKnobFM4->setValue(0.5f);
 -     fKnobFM4->setRotationAngle(270);
 -     fKnobFM4->setCallback(this);
 - 
 -     // knob FM5
 -     fKnobFM5 = new ImageKnob(this, knobImage);
 -     fKnobFM5->setAbsolutePos(510, 319);
 -     fKnobFM5->setRange(0.0f, 1.0f);
 -     fKnobFM5->setValue(0.5f);
 -     fKnobFM5->setRotationAngle(270);
 -     fKnobFM5->setCallback(this);
 - 
 -     // knob FM6
 -     fKnobFM6 = new ImageKnob(this, knobImage);
 -     fKnobFM6->setAbsolutePos(510, 379);
 -     fKnobFM6->setRange(0.0f, 1.0f);
 -     fKnobFM6->setValue(0.5f);
 -     fKnobFM6->setRotationAngle(270);
 -     fKnobFM6->setCallback(this);
 - 
 -     // knob Pan1
 -     fKnobPan1 = new ImageKnob(this, knobImage);
 -     fKnobPan1->setAbsolutePos(574, 79);
 -     fKnobPan1->setRange(-1.0f, 1.0f);
 -     fKnobPan1->setValue(0.0f);
 -     fKnobPan1->setRotationAngle(270);
 -     fKnobPan1->setCallback(this);
 - 
 -     // knob Pan2
 -     fKnobPan2 = new ImageKnob(this, knobImage);
 -     fKnobPan2->setAbsolutePos(574, 139);
 -     fKnobPan2->setRange(-1.0f, 1.0f);
 -     fKnobPan2->setValue(0.0f);
 -     fKnobPan2->setRotationAngle(270);
 -     fKnobPan2->setCallback(this);
 - 
 -     // knob Pan3
 -     fKnobPan3 = new ImageKnob(this, knobImage);
 -     fKnobPan3->setAbsolutePos(574, 199);
 -     fKnobPan3->setRange(-1.0f, 1.0f);
 -     fKnobPan3->setValue(0.0f);
 -     fKnobPan3->setRotationAngle(270);
 -     fKnobPan3->setCallback(this);
 - 
 -     // knob Pan4
 -     fKnobPan4 = new ImageKnob(this, knobImage);
 -     fKnobPan4->setAbsolutePos(574, 259);
 -     fKnobPan4->setRange(-1.0f, 1.0f);
 -     fKnobPan4->setValue(0.0f);
 -     fKnobPan4->setRotationAngle(270);
 -     fKnobPan4->setCallback(this);
 - 
 -     // knob Pan5
 -     fKnobPan5 = new ImageKnob(this, knobImage);
 -     fKnobPan5->setAbsolutePos(574, 319);
 -     fKnobPan5->setRange(-1.0f, 1.0f);
 -     fKnobPan5->setValue(0.0f);
 -     fKnobPan5->setRotationAngle(270);
 -     fKnobPan5->setCallback(this);
 - 
 -     // knob Pan6
 -     fKnobPan6 = new ImageKnob(this, knobImage);
 -     fKnobPan6->setAbsolutePos(574, 379);
 -     fKnobPan6->setRange(-1.0f, 1.0f);
 -     fKnobPan6->setValue(0.0f);
 -     fKnobPan6->setRotationAngle(270);
 -     fKnobPan6->setCallback(this);
 - 
 -     // knob Amp1
 -     fKnobAmp1 = new ImageKnob(this, knobImage);
 -     fKnobAmp1->setAbsolutePos(638, 79);
 -     fKnobAmp1->setRange(0.0f, 1.0f);
 -     fKnobAmp1->setValue(0.5f);
 -     fKnobAmp1->setRotationAngle(270);
 -     fKnobAmp1->setCallback(this);
 - 
 -     // knob Amp2
 -     fKnobAmp2 = new ImageKnob(this, knobImage);
 -     fKnobAmp2->setAbsolutePos(638, 139);
 -     fKnobAmp2->setRange(0.0f, 1.0f);
 -     fKnobAmp2->setValue(0.5f);
 -     fKnobAmp2->setRotationAngle(270);
 -     fKnobAmp2->setCallback(this);
 - 
 -     // knob Amp3
 -     fKnobAmp3 = new ImageKnob(this, knobImage);
 -     fKnobAmp3->setAbsolutePos(638, 199);
 -     fKnobAmp3->setRange(0.0f, 1.0f);
 -     fKnobAmp3->setValue(0.5f);
 -     fKnobAmp3->setRotationAngle(270);
 -     fKnobAmp3->setCallback(this);
 - 
 -     // knob Amp4
 -     fKnobAmp4 = new ImageKnob(this, knobImage);
 -     fKnobAmp4->setAbsolutePos(638, 259);
 -     fKnobAmp4->setRange(0.0f, 1.0f);
 -     fKnobAmp4->setValue(0.5f);
 -     fKnobAmp4->setRotationAngle(270);
 -     fKnobAmp4->setCallback(this);
 - 
 -     // knob Amp5
 -     fKnobAmp5 = new ImageKnob(this, knobImage);
 -     fKnobAmp5->setAbsolutePos(638, 319);
 -     fKnobAmp5->setRange(0.0f, 1.0f);
 -     fKnobAmp5->setValue(0.5f);
 -     fKnobAmp5->setRotationAngle(270);
 -     fKnobAmp5->setCallback(this);
 - 
 -     // knob Amp6
 -     fKnobAmp6 = new ImageKnob(this, knobImage);
 -     fKnobAmp6->setAbsolutePos(638, 379);
 -     fKnobAmp6->setRange(0.0f, 1.0f);
 -     fKnobAmp6->setValue(0.5f);
 -     fKnobAmp6->setRotationAngle(270);
 -     fKnobAmp6->setCallback(this);
 - 
 -     // knob Attack
 -     fKnobAttack = new ImageKnob(this, knobImage2);
 -     fKnobAttack->setAbsolutePos(34, 248);
 -     fKnobAttack->setRange(0.0f, 1.0f);
 -     fKnobAttack->setValue(0.0f);
 -     fKnobAttack->setRotationAngle(270);
 -     fKnobAttack->setCallback(this);
 - 
 -     // knob Decay
 -     fKnobDecay = new ImageKnob(this, knobImage2);
 -     fKnobDecay->setAbsolutePos(132, 248);
 -     fKnobDecay->setRange(0.0f, 1.0f);
 -     fKnobDecay->setValue(0.0f);
 -     fKnobDecay->setRotationAngle(270);
 -     fKnobDecay->setCallback(this);
 - 
 -     // knob Sustain
 -     fKnobSustain = new ImageKnob(this, knobImage2);
 -     fKnobSustain->setAbsolutePos(232, 248);
 -     fKnobSustain->setRange(0.0f, 1.0f);
 -     fKnobSustain->setValue(1.0f);
 -     fKnobSustain->setRotationAngle(270);
 -     fKnobSustain->setCallback(this);
 - 
 -     // knob Release
 -     fKnobRelease = new ImageKnob(this, knobImage2);
 -     fKnobRelease->setAbsolutePos(330, 248);
 -     fKnobRelease->setRange(0.0f, 1.0f);
 -     fKnobRelease->setValue(0.0f);
 -     fKnobRelease->setRotationAngle(270);
 -     fKnobRelease->setCallback(this);
 - 
 -     // knob Stereo
 -     fKnobStereo = new ImageKnob(this, knobImage2);
 -     fKnobStereo->setAbsolutePos(34, 339);
 -     fKnobStereo->setRange(-1.0f, 1.0f);
 -     fKnobStereo->setValue(0.0f);
 -     fKnobStereo->setRotationAngle(270);
 -     fKnobStereo->setCallback(this);
 - 
 -     // knob Tune
 -     fKnobTune = new ImageKnob(this, knobImage2);
 -     fKnobTune->setAbsolutePos(132, 339);
 -     fKnobTune->setRange(-1.0f, 1.0f);
 -     fKnobTune->setValue(0.0f);
 -     fKnobTune->setRotationAngle(270);
 -     fKnobTune->setCallback(this);
 - 
 -     // knob Volume
 -     fKnobVolume = new ImageKnob(this, knobImage2);
 -     fKnobVolume->setAbsolutePos(232, 339);
 -     fKnobVolume->setRange(0.0f, 1.0f);
 -     fKnobVolume->setValue(0.5f);
 -     fKnobVolume->setRotationAngle(270);
 -     fKnobVolume->setCallback(this);
 - 
 -     // knob Glide
 -     fKnobGlide = new ImageKnob(this, knobImage2);
 -     fKnobGlide->setAbsolutePos(330, 339);
 -     fKnobGlide->setRange(0.0f, 1.0f);
 -     fKnobGlide->setValue(0.0f);
 -     fKnobGlide->setRotationAngle(270);
 -     fKnobGlide->setCallback(this);
 - 
 -     // about button
 -     Image aboutImageNormal(SegmentJuiceArtwork::aboutButtonNormalData, SegmentJuiceArtwork::aboutButtonNormalWidth, SegmentJuiceArtwork::aboutButtonNormalHeight);
 -     Image aboutImageHover(SegmentJuiceArtwork::aboutButtonHoverData, SegmentJuiceArtwork::aboutButtonHoverWidth, SegmentJuiceArtwork::aboutButtonHoverHeight);
 -     fButtonAbout = new ImageButton(this, aboutImageNormal, aboutImageHover, aboutImageHover);
 -     fButtonAbout->setAbsolutePos(599, 17);
 -     fButtonAbout->setCallback(this);
 - 
 -     // set default values
 -     d_programChanged(0);
 - }
 - 
 - void SegmentJuiceUI::updateSynth() {
 -     synthL.setWave(0, fKnobWave1->getValue());
 -     synthL.setWave(1, fKnobWave2->getValue());
 -     synthL.setWave(2, fKnobWave3->getValue());
 -     synthL.setWave(3, fKnobWave4->getValue());
 -     synthL.setWave(4, fKnobWave5->getValue());
 -     synthL.setWave(5, fKnobWave6->getValue());
 -     synthL.setFM(0, fKnobFM1->getValue());
 -     synthL.setFM(1, fKnobFM2->getValue());
 -     synthL.setFM(2, fKnobFM3->getValue());
 -     synthL.setFM(3, fKnobFM4->getValue());
 -     synthL.setFM(4, fKnobFM5->getValue());
 -     synthL.setFM(5, fKnobFM6->getValue());
 -     synthL.setPan(0, -fKnobPan1->getValue());
 -     synthL.setPan(1, -fKnobPan2->getValue());
 -     synthL.setPan(2, -fKnobPan3->getValue());
 -     synthL.setPan(3, -fKnobPan4->getValue());
 -     synthL.setPan(4, -fKnobPan5->getValue());
 -     synthL.setPan(5, -fKnobPan6->getValue());
 -     synthL.setAmp(0, fKnobAmp1->getValue());
 -     synthL.setAmp(1, fKnobAmp2->getValue());
 -     synthL.setAmp(2, fKnobAmp3->getValue());
 -     synthL.setAmp(3, fKnobAmp4->getValue());
 -     synthL.setAmp(4, fKnobAmp5->getValue());
 -     synthL.setAmp(5, fKnobAmp6->getValue());
 -     synthL.setMAmp(fKnobVolume->getValue());
 - 
 -     synthR.setWave(0, fKnobWave1->getValue());
 -     synthR.setWave(1, fKnobWave2->getValue());
 -     synthR.setWave(2, fKnobWave3->getValue());
 -     synthR.setWave(3, fKnobWave4->getValue());
 -     synthR.setWave(4, fKnobWave5->getValue());
 -     synthR.setWave(5, fKnobWave6->getValue());
 -     synthR.setFM(0, fKnobFM1->getValue());
 -     synthR.setFM(1, fKnobFM2->getValue());
 -     synthR.setFM(2, fKnobFM3->getValue());
 -     synthR.setFM(3, fKnobFM4->getValue());
 -     synthR.setFM(4, fKnobFM5->getValue());
 -     synthR.setFM(5, fKnobFM6->getValue());
 -     synthR.setPan(0, fKnobPan1->getValue());
 -     synthR.setPan(1, fKnobPan2->getValue());
 -     synthR.setPan(2, fKnobPan3->getValue());
 -     synthR.setPan(3, fKnobPan4->getValue());
 -     synthR.setPan(4, fKnobPan5->getValue());
 -     synthR.setPan(5, fKnobPan6->getValue());
 -     synthR.setAmp(0, fKnobAmp1->getValue());
 -     synthR.setAmp(1, fKnobAmp2->getValue());
 -     synthR.setAmp(2, fKnobAmp3->getValue());
 -     synthR.setAmp(3, fKnobAmp4->getValue());
 -     synthR.setAmp(4, fKnobAmp5->getValue());
 -     synthR.setAmp(5, fKnobAmp6->getValue());
 -     synthR.setMAmp(fKnobVolume->getValue());
 - }
 - 
 - // -----------------------------------------------------------------------
 - // DSP Callbacks
 - 
 - void SegmentJuiceUI::d_parameterChanged(uint32_t index, float value)
 - {
 -     switch (index)
 -     {
 -     case SegmentJuicePlugin::paramWave1:
 -         fKnobWave1->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramWave2:
 -         fKnobWave2->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramWave3:
 -         fKnobWave3->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramWave4:
 -         fKnobWave4->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramWave5:
 -         fKnobWave5->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramWave6:
 -         fKnobWave6->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramFM1:
 -         fKnobFM1->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramFM2:
 -         fKnobFM2->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramFM3:
 -         fKnobFM3->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramFM4:
 -         fKnobFM4->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramFM5:
 -         fKnobFM5->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramFM6:
 -         fKnobFM6->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramPan1:
 -         fKnobPan1->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramPan2:
 -         fKnobPan2->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramPan3:
 -         fKnobPan3->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramPan4:
 -         fKnobPan4->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramPan5:
 -         fKnobPan5->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramPan6:
 -         fKnobPan6->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramAmp1:
 -         fKnobAmp1->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramAmp2:
 -         fKnobAmp2->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramAmp3:
 -         fKnobAmp3->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramAmp4:
 -         fKnobAmp4->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramAmp5:
 -         fKnobAmp5->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramAmp6:
 -         fKnobAmp6->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramAttack:
 -         fKnobAttack->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramDecay:
 -         fKnobDecay->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramSustain:
 -         fKnobSustain->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramRelease:
 -         fKnobRelease->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramStereo:
 -         fKnobStereo->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramTune:
 -         fKnobTune->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramVolume:
 -         fKnobVolume->setValue(value);
 -         break;
 -     case SegmentJuicePlugin::paramGlide:
 -         fKnobGlide->setValue(value);
 -         break;
 -     }
 - 
 -     updateSynth();
 - }
 - 
 - void SegmentJuiceUI::d_programChanged(uint32_t index)
 - {
 -     if (index != 0)
 -         return;
 - 
 -     // Default values
 -     fKnobWave1->setValue(3.0f);
 -     fKnobWave2->setValue(3.0f);
 -     fKnobWave3->setValue(3.0f);
 -     fKnobWave6->setValue(3.0f);
 -     fKnobWave5->setValue(3.0f);
 -     fKnobWave6->setValue(3.0f);
 - 
 -     fKnobFM1->setValue(0.5f);
 -     fKnobFM2->setValue(0.5f);
 -     fKnobFM3->setValue(0.5f);
 -     fKnobFM6->setValue(0.5f);
 -     fKnobFM5->setValue(0.5f);
 -     fKnobFM6->setValue(0.5f);
 - 
 -     fKnobPan1->setValue(0.0f);
 -     fKnobPan2->setValue(0.0f);
 -     fKnobPan3->setValue(0.0f);
 -     fKnobPan6->setValue(0.0f);
 -     fKnobPan5->setValue(0.0f);
 -     fKnobPan6->setValue(0.0f);
 - 
 -     fKnobAmp1->setValue(0.5f);
 -     fKnobAmp2->setValue(0.5f);
 -     fKnobAmp3->setValue(0.5f);
 -     fKnobAmp6->setValue(0.5f);
 -     fKnobAmp5->setValue(0.5f);
 -     fKnobAmp6->setValue(0.5f);
 - 
 -     fKnobAttack->setValue(0.0f);
 -     fKnobDecay->setValue(0.0f);
 -     fKnobSustain->setValue(1.0f);
 -     fKnobRelease->setValue(0.0f);
 - 
 -     fKnobStereo->setValue(0.0f);
 -     fKnobTune->setValue(0.0f);
 -     fKnobVolume->setValue(0.5f);
 -     fKnobGlide->setValue(0.0f);
 - 
 -     for (int i=0; i<6; i++) {
 -         synthL.setFM(i, 0.5f);
 -         synthR.setFM(i, 0.5f);
 - 
 -         synthL.setPan(i, 0.0f);
 -         synthR.setPan(i, 0.0f);
 - 
 -         synthL.setAmp(i, 0.5f);
 -         synthR.setAmp(i, 0.5f);
 -     }
 - 
 -     synthL.setSampleRate(d_getSampleRate());
 -     synthR.setSampleRate(d_getSampleRate());
 - 
 -     synthL.setMAmp(0.5f);
 -     synthR.setMAmp(0.5f);
 - 
 -     synthL.play(69);
 -     synthR.play(69);
 -     synthL.setAttack(0);
 -     synthR.setAttack(0);
 -     synthL.setDecay(0);
 -     synthR.setDecay(0);
 -     synthL.setSustain(1);
 -     synthR.setSustain(1);
 -     synthL.setRelease(0);
 -     synthR.setRelease(0);
 -     synthL.setGlide(0);
 -     synthR.setGlide(0);
 -     synthL.setTune(0);
 -     synthR.setTune(0);
 - }
 - 
 - // -----------------------------------------------------------------------
 - // Widget Callbacks
 - 
 - void SegmentJuiceUI::imageButtonClicked(ImageButton* button, int)
 - {
 -     if (button != fButtonAbout)
 -         return;
 - 
 -     fAboutWindow.exec();
 - }
 - 
 - void SegmentJuiceUI::imageKnobDragStarted(ImageKnob* knob)
 - {
 -     if (knob == fKnobWave1)
 -         d_editParameter(SegmentJuicePlugin::paramWave1, true);
 -     else if (knob == fKnobWave2)
 -         d_editParameter(SegmentJuicePlugin::paramWave2, true);
 -     else if (knob == fKnobWave3)
 -         d_editParameter(SegmentJuicePlugin::paramWave3, true);
 -     else if (knob == fKnobWave4)
 -         d_editParameter(SegmentJuicePlugin::paramWave4, true);
 -     else if (knob == fKnobWave5)
 -         d_editParameter(SegmentJuicePlugin::paramWave5, true);
 -     else if (knob == fKnobWave6)
 -         d_editParameter(SegmentJuicePlugin::paramWave6, true);
 -     else if (knob == fKnobFM1)
 -         d_editParameter(SegmentJuicePlugin::paramFM1, true);
 -     else if (knob == fKnobFM2)
 -         d_editParameter(SegmentJuicePlugin::paramFM2, true);
 -     else if (knob == fKnobFM3)
 -         d_editParameter(SegmentJuicePlugin::paramFM3, true);
 -     else if (knob == fKnobFM4)
 -         d_editParameter(SegmentJuicePlugin::paramFM4, true);
 -     else if (knob == fKnobFM5)
 -         d_editParameter(SegmentJuicePlugin::paramFM5, true);
 -     else if (knob == fKnobFM6)
 -         d_editParameter(SegmentJuicePlugin::paramFM6, true);
 -     else if (knob == fKnobPan1)
 -         d_editParameter(SegmentJuicePlugin::paramPan1, true);
 -     else if (knob == fKnobPan2)
 -         d_editParameter(SegmentJuicePlugin::paramPan2, true);
 -     else if (knob == fKnobPan3)
 -         d_editParameter(SegmentJuicePlugin::paramPan3, true);
 -     else if (knob == fKnobPan4)
 -         d_editParameter(SegmentJuicePlugin::paramPan4, true);
 -     else if (knob == fKnobPan5)
 -         d_editParameter(SegmentJuicePlugin::paramPan5, true);
 -     else if (knob == fKnobPan6)
 -         d_editParameter(SegmentJuicePlugin::paramPan6, true);
 -     else if (knob == fKnobAmp1)
 -         d_editParameter(SegmentJuicePlugin::paramAmp1, true);
 -     else if (knob == fKnobAmp2)
 -         d_editParameter(SegmentJuicePlugin::paramAmp2, true);
 -     else if (knob == fKnobAmp3)
 -         d_editParameter(SegmentJuicePlugin::paramAmp3, true);
 -     else if (knob == fKnobAmp4)
 -         d_editParameter(SegmentJuicePlugin::paramAmp4, true);
 -     else if (knob == fKnobAmp5)
 -         d_editParameter(SegmentJuicePlugin::paramAmp5, true);
 -     else if (knob == fKnobAmp6)
 -         d_editParameter(SegmentJuicePlugin::paramAmp6, true);
 -     else if (knob == fKnobAttack)
 -         d_editParameter(SegmentJuicePlugin::paramAttack, true);
 -     else if (knob == fKnobDecay)
 -         d_editParameter(SegmentJuicePlugin::paramDecay, true);
 -     else if (knob == fKnobSustain)
 -         d_editParameter(SegmentJuicePlugin::paramSustain, true);
 -     else if (knob == fKnobRelease)
 -         d_editParameter(SegmentJuicePlugin::paramRelease, true);
 -     else if (knob == fKnobStereo)
 -         d_editParameter(SegmentJuicePlugin::paramStereo, true);
 -     else if (knob == fKnobTune)
 -         d_editParameter(SegmentJuicePlugin::paramTune, true);
 -     else if (knob == fKnobVolume)
 -         d_editParameter(SegmentJuicePlugin::paramVolume, true);
 -     else if (knob == fKnobGlide)
 -         d_editParameter(SegmentJuicePlugin::paramGlide, true);
 - }
 - 
 - void SegmentJuiceUI::imageKnobDragFinished(ImageKnob* knob)
 - {
 -     if (knob == fKnobWave1)
 -         d_editParameter(SegmentJuicePlugin::paramWave1, false);
 -     else if (knob == fKnobWave2)
 -         d_editParameter(SegmentJuicePlugin::paramWave2, false);
 -     else if (knob == fKnobWave3)
 -         d_editParameter(SegmentJuicePlugin::paramWave3, false);
 -     else if (knob == fKnobWave4)
 -         d_editParameter(SegmentJuicePlugin::paramWave4, false);
 -     else if (knob == fKnobWave5)
 -         d_editParameter(SegmentJuicePlugin::paramWave5, false);
 -     else if (knob == fKnobWave6)
 -         d_editParameter(SegmentJuicePlugin::paramWave6, false);
 -     else if (knob == fKnobFM1)
 -         d_editParameter(SegmentJuicePlugin::paramFM1, false);
 -     else if (knob == fKnobFM2)
 -         d_editParameter(SegmentJuicePlugin::paramFM2, false);
 -     else if (knob == fKnobFM3)
 -         d_editParameter(SegmentJuicePlugin::paramFM3, false);
 -     else if (knob == fKnobFM4)
 -         d_editParameter(SegmentJuicePlugin::paramFM4, false);
 -     else if (knob == fKnobFM5)
 -         d_editParameter(SegmentJuicePlugin::paramFM5, false);
 -     else if (knob == fKnobFM6)
 -         d_editParameter(SegmentJuicePlugin::paramFM6, false);
 -     else if (knob == fKnobPan1)
 -         d_editParameter(SegmentJuicePlugin::paramPan1, false);
 -     else if (knob == fKnobPan2)
 -         d_editParameter(SegmentJuicePlugin::paramPan2, false);
 -     else if (knob == fKnobPan3)
 -         d_editParameter(SegmentJuicePlugin::paramPan3, false);
 -     else if (knob == fKnobPan4)
 -         d_editParameter(SegmentJuicePlugin::paramPan4, false);
 -     else if (knob == fKnobPan5)
 -         d_editParameter(SegmentJuicePlugin::paramPan5, false);
 -     else if (knob == fKnobPan6)
 -         d_editParameter(SegmentJuicePlugin::paramPan6, false);
 -     else if (knob == fKnobAmp1)
 -         d_editParameter(SegmentJuicePlugin::paramAmp1, false);
 -     else if (knob == fKnobAmp2)
 -         d_editParameter(SegmentJuicePlugin::paramAmp2, false);
 -     else if (knob == fKnobAmp3)
 -         d_editParameter(SegmentJuicePlugin::paramAmp3, false);
 -     else if (knob == fKnobAmp4)
 -         d_editParameter(SegmentJuicePlugin::paramAmp4, false);
 -     else if (knob == fKnobAmp5)
 -         d_editParameter(SegmentJuicePlugin::paramAmp5, false);
 -     else if (knob == fKnobAmp6)
 -         d_editParameter(SegmentJuicePlugin::paramAmp6, false);
 -     else if (knob == fKnobAttack)
 -         d_editParameter(SegmentJuicePlugin::paramAttack, false);
 -     else if (knob == fKnobDecay)
 -         d_editParameter(SegmentJuicePlugin::paramDecay, false);
 -     else if (knob == fKnobSustain)
 -         d_editParameter(SegmentJuicePlugin::paramSustain, false);
 -     else if (knob == fKnobRelease)
 -         d_editParameter(SegmentJuicePlugin::paramRelease, false);
 -     else if (knob == fKnobStereo)
 -         d_editParameter(SegmentJuicePlugin::paramStereo, false);
 -     else if (knob == fKnobTune)
 -         d_editParameter(SegmentJuicePlugin::paramTune, false);
 -     else if (knob == fKnobVolume)
 -         d_editParameter(SegmentJuicePlugin::paramVolume, false);
 -     else if (knob == fKnobGlide)
 -         d_editParameter(SegmentJuicePlugin::paramGlide, false);
 - }
 - 
 - void SegmentJuiceUI::imageKnobValueChanged(ImageKnob* knob, float value)
 - {
 -     if (knob == fKnobWave1)
 -         d_setParameterValue(SegmentJuicePlugin::paramWave1, value);
 -     else if (knob == fKnobWave2)
 -         d_setParameterValue(SegmentJuicePlugin::paramWave2, value);
 -     else if (knob == fKnobWave3)
 -         d_setParameterValue(SegmentJuicePlugin::paramWave3, value);
 -     else if (knob == fKnobWave4)
 -         d_setParameterValue(SegmentJuicePlugin::paramWave4, value);
 -     else if (knob == fKnobWave5)
 -         d_setParameterValue(SegmentJuicePlugin::paramWave5, value);
 -     else if (knob == fKnobWave6)
 -         d_setParameterValue(SegmentJuicePlugin::paramWave6, value);
 -     else if (knob == fKnobFM1)
 -         d_setParameterValue(SegmentJuicePlugin::paramFM1, value);
 -     else if (knob == fKnobFM2)
 -         d_setParameterValue(SegmentJuicePlugin::paramFM2, value);
 -     else if (knob == fKnobFM3)
 -         d_setParameterValue(SegmentJuicePlugin::paramFM3, value);
 -     else if (knob == fKnobFM4)
 -         d_setParameterValue(SegmentJuicePlugin::paramFM4, value);
 -     else if (knob == fKnobFM5)
 -         d_setParameterValue(SegmentJuicePlugin::paramFM5, value);
 -     else if (knob == fKnobFM6)
 -         d_setParameterValue(SegmentJuicePlugin::paramFM6, value);
 -     else if (knob == fKnobPan1)
 -         d_setParameterValue(SegmentJuicePlugin::paramPan1, value);
 -     else if (knob == fKnobPan2)
 -         d_setParameterValue(SegmentJuicePlugin::paramPan2, value);
 -     else if (knob == fKnobPan3)
 -         d_setParameterValue(SegmentJuicePlugin::paramPan3, value);
 -     else if (knob == fKnobPan4)
 -         d_setParameterValue(SegmentJuicePlugin::paramPan4, value);
 -     else if (knob == fKnobPan5)
 -         d_setParameterValue(SegmentJuicePlugin::paramPan5, value);
 -     else if (knob == fKnobPan6)
 -         d_setParameterValue(SegmentJuicePlugin::paramPan6, value);
 -     else if (knob == fKnobAmp1)
 -         d_setParameterValue(SegmentJuicePlugin::paramAmp1, value);
 -     else if (knob == fKnobAmp2)
 -         d_setParameterValue(SegmentJuicePlugin::paramAmp2, value);
 -     else if (knob == fKnobAmp3)
 -         d_setParameterValue(SegmentJuicePlugin::paramAmp3, value);
 -     else if (knob == fKnobAmp4)
 -         d_setParameterValue(SegmentJuicePlugin::paramAmp4, value);
 -     else if (knob == fKnobAmp5)
 -         d_setParameterValue(SegmentJuicePlugin::paramAmp5, value);
 -     else if (knob == fKnobAmp6)
 -         d_setParameterValue(SegmentJuicePlugin::paramAmp6, value);
 -     else if (knob == fKnobAttack)
 -         d_setParameterValue(SegmentJuicePlugin::paramAttack, value);
 -     else if (knob == fKnobDecay)
 -         d_setParameterValue(SegmentJuicePlugin::paramDecay, value);
 -     else if (knob == fKnobSustain)
 -         d_setParameterValue(SegmentJuicePlugin::paramSustain, value);
 -     else if (knob == fKnobRelease)
 -         d_setParameterValue(SegmentJuicePlugin::paramRelease, value);
 -     else if (knob == fKnobStereo)
 -         d_setParameterValue(SegmentJuicePlugin::paramStereo, value);
 -     else if (knob == fKnobTune)
 -         d_setParameterValue(SegmentJuicePlugin::paramTune, value);
 -     else if (knob == fKnobVolume)
 -         d_setParameterValue(SegmentJuicePlugin::paramVolume, value);
 -     else if (knob == fKnobGlide)
 -         d_setParameterValue(SegmentJuicePlugin::paramGlide, value);
 - 
 -     updateSynth();
 - 
 - }
 - 
 - void SegmentJuiceUI::onDisplay()
 - {
 -     fImgBackground.draw();
 - 
 -     int cX = 23+4;
 -     int cY = 50;
 -     int cW = 388-cX-3;
 -     int cH = 216-cY;
 - 
 -     //draw waveform
 -     synthL.play(71);
 -     synthR.play(71);
 -     //glEnable(GL_BLEND);
 -     //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 -     //glEnable( GL_LINE_SMOOTH );
 -     //glHint( GL_LINE_SMOOTH_HINT, GL_NICEST );
 -     glLineWidth(1.0f);
 -     //draw #left waveform
 -     glColor4f(0.0f, 1.0f, 0.0f, 0.5f);
 -     glBegin(GL_LINE_STRIP);
 -         for (int i = 0; i<cW; i++) {
 -             float out = synthL.run()*cH/2+cH/2+cY;
 -             glVertex2i(i+cX, out);
 -             std::cout << out << std::endl;
 -         }
 -     //draw #right waveform
 -     glEnd();
 -     glColor4f(0.0f, 0.0f, 1.0f, 0.5f);
 -     glBegin(GL_LINE_STRIP);
 -             for (int i = 0; i<cW; i++) {
 -                     glVertex2i(i+cX, synthR.run()*cH/2+cH/2+cY);
 -             }
 -     glEnd();
 - 
 -     //draw 0dc line
 - 
 -     glColor4f(1.0f, 1.0f, 1.0f, 0.5f);
 -     glBegin(GL_LINES);
 -             glVertex2i(cX, cY+cH/2);
 -             glVertex2i(cX+cW, cY+cH/2);
 -     glEnd();
 - 
 -     glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
 - }
 - 
 - // -----------------------------------------------------------------------
 - 
 - UI* createUI()
 - {
 -     return new SegmentJuiceUI();
 - }
 - 
 - // -----------------------------------------------------------------------
 - 
 - END_NAMESPACE_DISTRHO
 
 
  |