view Source/GUI.cpp @ 13:989865d55c73 tip

Commit.
author martinm_home <martin.morrell@eecs.qmul.ac.uk>
date Thu, 27 Sep 2012 23:30:29 +0100
parents 87dc3d84c120
children
line wrap: on
line source
//-----------------------------------------------------------------------------
// VSTGUI: Graphical User Interface Framework for VST plugins : 
//
// Version 3.5
//
//-----------------------------------------------------------------------------
// VSTGUI LICENSE
// © 2008, Steinberg Media Technologies, All Rights Reserved
//-----------------------------------------------------------------------------
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
// 
//   * Redistributions of source code must retain the above copyright notice, 
//     this list of conditions and the following disclaimer.
//   * Redistributions in binary form must reproduce the above copyright notice,
//     this list of conditions and the following disclaimer in the documentation 
//     and/or other materials provided with the distribution.
//   * Neither the name of the Steinberg Media Technologies nor the names of its
//     contributors may be used to endorse or promote products derived from this 
//     software without specific prior written permission.
// 
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A  PARTICULAR PURPOSE ARE DISCLAIMED. 
// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE  OF THIS SOFTWARE, EVEN IF ADVISED
// OF THE POSSIBILITY OF SUCH DAMAGE.
//-----------------------------------------------------------------------------

#include "GUI.h"
#include <stdio.h>
#include <vstgui.h>
#define _USE_MATH_DEFINES
#include <cmath>





//------------------------------------------------------------------------------------
AEffGUIEditor* createEditor (AudioEffectX* effect)
{
	return new MyEditor (effect);
}

//------------------------------------------------------------------------------------
MyEditor::MyEditor (void* ptr)
: AEffGUIEditor (ptr)
{
    rect.left   = 0;
    rect.top    = 0;
    rect.right  = 578;
    rect.bottom = 502;
}

//------------------------------------------------------------------------------------
bool MyEditor::open (void* ptr)
{
	//Knob Images
	knob_360 = new CBitmap ("360_knob.png");
	knob_red = new CBitmap ("red_knob.png");
	knob_blue = new CBitmap ("blue_knob.png");
	knob_red_blue = new CBitmap ("red_blue_knob.png");
    knob_blue_red = new CBitmap("blue_red_knob.png");
	knob_mode2 = new CBitmap ("mode2_knob.png");
    knob_mode2b = new CBitmap ("mode2b_knob.png");
	knob_mode4 = new CBitmap ("mode4_knob.png");
    knob_mode5 = new CBitmap ("mode5_knob.png");
	
	//Create the main frame
	frameSize (0, 0, 578, 502);
	CFrame* newFrame = new CFrame (frameSize, ptr, this);
	newFrame->setBackgroundColor (CColor(23,25,26,255));
    newFrame->setDirty();

    //Set up the Colours that are used
	kDisplayText = CColor(255,255,255,255);//(R,G,B,Alpha)
	kDisplayBackground = CColor(94,102,106,255);//(R,G,B,Alpha)
	kLabelText = CColor(82,116,193,255);//(R,G,B,Alpha)	
	kBlank = CColor(0,0,0,0);
    
     
	
	
	//Transforms
	transformsDisplay(newFrame);
	
	//Zooming
	zoomDisplay(newFrame);
	
    //Polar Plot
    plotDisplay(newFrame);
    
    //Settings
    settingsDisplay(newFrame);
    
    //Info Display
    nameDisplay(newFrame);
    
    
	
    
    //Create main frame
	frame = newFrame;
    
    
	//-- sync parameters
    myPlot->decoder_mode5x = effect->getParameter(103); //Sync the hidden 5.x decoder mode first
    for (int i = 0; i <= 4; i++)    //Sync Transforms & Zoom
        setParameter (i, effect->getParameter (i));
    for (int i = 18; i <= 19; i++)    //Sync Decoder Mode & Output Type
        setParameter (i, effect->getParameter (i));
    
    
	return true;
}



//------------------------------------------------------------------------------------
void MyEditor::close ()
{
    knob_360->forget();
	knob_red->forget();
	knob_blue->forget();
	knob_red_blue->forget();
    knob_blue_red->forget();
	knob_mode2->forget();
    knob_mode2b->forget();
	knob_mode4->forget();
    knob_mode5->forget();
    
	//-- on close we need to delete the frame object.
	//-- once again we make sure that the member frame variable is set to zero before we delete it
	//-- so that calls to setParameter won't crash.
    CFrame* oldFrame = frame;
	frame = 0;
	oldFrame->forget();
}




//------------------------------------------------------------------------------------
void MyEditor::transformsDisplay(CFrame* newFrame)
{
    //FIRST OFF - define a top coordinate
    int hPos = cSep;
    int ePos = cSep;
    
    
    bTransforms = new CBitmap ("transforms.png");
    
    CRect transSize = CRect (0, 0, bTransforms->getWidth (),bTransforms->getHeight ());
    transSize.offset(hPos, ePos);//transformsEl+labelOffset-textDepthLarge
	CView* transforms_view = new CView (transSize);
    transforms_view->setBackground (bTransforms);
    newFrame->addView (transforms_view);
    newFrame->remember();
    
	//Rotate
	r (0, 0, knob_red_blue->getWidth (), knob_red_blue->getHeight () / IMAGE);
	r.offset(hPos+cSep, ePos+kOffset);
	knobRotate = new CAnimKnob (r, this, kRotate, IMAGE, knob_360->getHeight () / IMAGE, knob_360, CPoint (0, 0));
	newFrame->addView (knobRotate);
    newFrame->remember();
	
	//Tilt
	r.offset(knob_red_blue->getWidth()+cSep, 0);
	knobTilt = new CAnimKnob (r, this, kTilt, IMAGE, knob_360->getHeight () / IMAGE, knob_360, CPoint (0, 0));
	newFrame->addView (knobTilt);
    newFrame->remember();
	
	//Tumble
	r.offset(knob_red_blue->getWidth()+cSep, 0);
	knobTumble = new CAnimKnob (r, this, kTumble, IMAGE, knob_360->getHeight () / IMAGE, knob_360, CPoint (0, 0));
	newFrame->addView (knobTumble);
    newFrame->remember();
	

	

	
    //--CTextLabel--------------------------------------
    //Label Rotate
    LabelSize (0, 0, knob_red_blue->getWidth (), tDepth);
    LabelSize.offset (hPos+cSep, ePos+lOffset);
    CTextLabel* labelRotate = new CTextLabel (LabelSize, 0, 0, kCenterText); 
    labelRotate->setFont (kNormalFontSmall); 
    labelRotate->setFontColor (kLabelText); 
    labelRotate->setBackColor (kBlank); 
    labelRotate->setFrameColor (kBlank);
    labelRotate->setText("Rotate");
    newFrame->addView (labelRotate);
    newFrame->remember();
	
	//Label Tilt
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    CTextLabel* labelTilt = new CTextLabel (LabelSize, 0, 0, kCenterText); 
    labelTilt->setFont (kNormalFontSmall); 
    labelTilt->setFontColor (kLabelText); 
    labelTilt->setBackColor (kBlank); 
    labelTilt->setFrameColor (kBlank);
    labelTilt->setText("Tilt");
    newFrame->addView (labelTilt);
    newFrame->remember();
	
	//Label Tumble
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    CTextLabel* labelTumble = new CTextLabel (LabelSize, 0, 0, kCenterText); 
    labelTumble->setFont (kNormalFontSmall); 
    labelTumble->setFontColor (kLabelText); 
    labelTumble->setBackColor (kBlank); 
    labelTumble->setFrameColor (kBlank);
    labelTumble->setText("Tumble");
    newFrame->addView (labelTumble);
    newFrame->remember();
	

	//Label Section
    LabelSize (0, 0, bTransforms->getWidth(), tDepthLarge);
    LabelSize.offset (hPos, ePos+tOffset);
    CTextLabel* labelTransforms = new CTextLabel (LabelSize, 0, 0, kCenterText); 
    labelTransforms->setFont (kNormalFontBig); 
    labelTransforms->setFontColor (kLabelText); 
    labelTransforms->setBackColor (kBlank); 
    labelTransforms->setFrameColor (kBlank);
    labelTransforms->setText("Transforms");
    newFrame->addView (labelTransforms);
    newFrame->remember();
	
	
	

	//--CTextLabel--------------------------------------
	//Rotate Value
	DisplaySize (0, 0, knob_red_blue->getWidth (), tDepth);
	DisplaySize.offset (hPos+cSep, ePos+pOffset);
	paramRotate = new CTextLabel (DisplaySize, 0, 0, kCenterText); 
	paramRotate->setHoriAlign(kCenterText);
	paramRotate->setFont (kNormalFontVerySmall); 
	paramRotate->setFontColor (kDisplayText); 
	paramRotate->setBackColor (kDisplayBackground); 
	paramRotate->setFrameColor (kBlackCColor); 
	newFrame->addView (paramRotate);
    newFrame->remember();
	
	
	//Tilt Value 
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramTilt = new CTextLabel (DisplaySize, 0, 0, kCenterText); 
	paramTilt->setHoriAlign(kCenterText);
	paramTilt->setFont (kNormalFontVerySmall); 
	paramTilt->setFontColor (kDisplayText); 
	paramTilt->setBackColor (kDisplayBackground); 
	paramTilt->setFrameColor (kBlackCColor); 
	newFrame->addView (paramTilt);
    newFrame->remember();
	
	
	//Tumble Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramTumble = new CTextLabel (DisplaySize, 0, 0, kCenterText); 
	paramTumble->setHoriAlign(kCenterText);
	paramTumble->setFont (kNormalFontVerySmall); 
	paramTumble->setFontColor (kDisplayText); 
	paramTumble->setBackColor (kDisplayBackground); 
	paramTumble->setFrameColor (kBlackCColor); 
	newFrame->addView (paramTumble);
    newFrame->remember();
    
    
    //-- remember our controls so that we can sync them with the state of the effect
	controls[kRotate] = knobRotate;
	controls[kTilt] = knobTilt;
	controls[kTumble] = knobTumble;
    
    //Forget this section's Background, Knobs, Labels
    bTransforms->forget();
    knobRotate->forget ();
    knobTilt->forget ();
    knobTumble->forget ();
    labelRotate->forget();
    labelTilt->forget();
    labelTumble->forget();
    labelTransforms->forget();
    paramRotate->forget();
    paramTilt->forget();
    paramTumble->forget();
}


//------------------------------------------------------------------------------------
void MyEditor::zoomDisplay(CFrame* newFrame)
{
    //FIRST OFF - define a top coordinate
    int hPos = 402;
    int ePos = cSep;
    
    bZoom = new CBitmap ("zoom.png");
    
    CRect zoomSize = CRect (0, 0, bZoom->getWidth (),bZoom->getHeight ());
    zoomSize.offset(hPos, ePos);
	CView* zoom_view = new CView (zoomSize);
    zoom_view->setBackground (bZoom);
    newFrame->addView (zoom_view);
    newFrame->remember();
    
	//ZoomMethod
	CRect r (0, 0, knob_red_blue->getWidth (), knob_red_blue->getHeight () / IMAGE);
	r.offset(hPos+cSep, kOffset+cSep);
	knobZoomMethod = new CHorizontalSwitch (r, this, kZoomMethod, 4, knob_mode4->getHeight () / 4, 4, knob_mode4, CPoint (0, 0));
	newFrame->addView (knobZoomMethod);
    newFrame->remember();
	
	//Zoom
	r.offset(knob_mode4->getWidth()+cSep, 0);
	knobZoom = new CAnimKnob (r, this, kZoom, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_red_blue, CPoint (0, 0));
	newFrame->addView (knobZoom);
    newFrame->remember();
	
	
	//--CTextLabel--------------------------------------
    //Label ZoomMethod
    LabelSize (0, 0, knob_red_blue->getWidth (), tDepth);
    LabelSize.offset (hPos+cSep, ePos+lOffset);
    CTextLabel* labelZoomMethod = new CTextLabel (LabelSize, 0, 0, kCenterText); 
    labelZoomMethod->setFont (kNormalFontSmall); 
    labelZoomMethod->setFontColor (kLabelText); 
    labelZoomMethod->setBackColor (kBlank); 
    labelZoomMethod->setFrameColor (kBlank);
    labelZoomMethod->setText("Zoom Type");
    newFrame->addView (labelZoomMethod);
    newFrame->remember();
	
	//Label Zoom
	LabelSize.offset (knob_mode4->getWidth()+cSep, 0);
    CTextLabel* labelZoom = new CTextLabel (LabelSize, 0, 0, kCenterText); 
    labelZoom->setFont (kNormalFontSmall); 
    labelZoom->setFontColor (kLabelText); 
    labelZoom->setBackColor (kBlank); 
    labelZoom->setFrameColor (kBlank);
    labelZoom->setText("Zoom");
    newFrame->addView (labelZoom);
    newFrame->remember();
	
	//Label Section
    LabelSize (0, 0, bZoom->getWidth(), tDepthLarge);
    LabelSize.offset (hPos, ePos+tOffset);
    CTextLabel* labelZooming = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelZooming->setFont (kNormalFontBig); 
    labelZooming->setFontColor (kLabelText); 
    labelZooming->setBackColor (kBlank); 
    labelZooming->setFrameColor (kBlank);
    labelZooming->setText("Zooming");
    newFrame->addView (labelZooming);
    newFrame->remember();
	
	
	//--CTextLabel--------------------------------------
	//Zoom Method
	DisplaySize (0, 0, knob_red_blue->getWidth (), tDepth);
	DisplaySize.offset (hPos+cSep, ePos+pOffset);
	paramZoomMethod = new CTextLabel (DisplaySize, 0, 0, kCenterText); 
	paramZoomMethod->setHoriAlign(kCenterText);
	paramZoomMethod->setFont (kNormalFontVerySmall); 
	paramZoomMethod->setFontColor (kDisplayText); 
	paramZoomMethod->setBackColor (kDisplayBackground); 
	paramZoomMethod->setFrameColor (kBlackCColor); 
	newFrame->addView (paramZoomMethod);
    newFrame->remember();
	
	//Zoom Value 
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramZoom = new CTextLabel (DisplaySize, 0, 0, kCenterText); 
	paramZoom->setHoriAlign(kCenterText);
	paramZoom->setFont (kNormalFontVerySmall); 
	paramZoom->setFontColor (kDisplayText); 
	paramZoom->setBackColor (kDisplayBackground); 
	paramZoom->setFrameColor (kBlackCColor); 
	newFrame->addView (paramZoom);
    newFrame->remember();
	
    
    //-- remember our controls so that we can sync them with the state of the effect
    controls[kZoom] = knobZoom;
	controls[kZoomMethod] = knobZoomMethod;
    
    //Forget this section's Background, Knobs, Labels
    bZoom->forget();
    knobZoomMethod->forget();
    knobZoom->forget();
    labelZoomMethod->forget();
    labelZoom->forget();
    labelZooming->forget();
    paramZoomMethod->forget();
    paramZoom->forget();
}


//------------------------------------------------------------------------------------
void MyEditor::stereoDisplay()
{
    //FIRST OFF - define a top coordinate
    int hPos = cSep;
    int ePos = 288;
    
    
    bControls = new CBitmap ("controls.png");
    
    CRect controlSize = CRect (0, 0, bControls->getWidth (),bControls->getHeight ());
    controlSize.offset(hPos, ePos);
    
	control_view = new CView (controlSize);
    control_view->setBackground (bControls);
    getFrame()->addView (control_view);
    getFrame()->remember();
    
    

	//Mode
	r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
	r.offset(hPos+cSep,ePos+kOffset);
	knobMode = new CHorizontalSwitch (r, this, kMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
	getFrame()->addView (knobMode);
    getFrame()->remember();
	
	//Width
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobWidth = new CAnimKnob (r, this, kWidth, IMAGE, knob_red->getHeight () / IMAGE, knob_red, CPoint (0, 0));
	getFrame()->addView (knobWidth);
    getFrame()->remember();
	
	//Pattern
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobPattern = new CAnimKnob (r, this, kPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
	getFrame()->addView (knobPattern);
    getFrame()->remember();

	//RearVerb
    r.offset(2*knob_mode2->getWidth()+2*cSep+10, 0);
    knobRearVerb = new CAnimKnob (r, this, kRearVerb, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_red, CPoint (0, 0));
	getFrame()->addView (knobRearVerb);
    getFrame()->remember();
	
	//HiVerb
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobHiVerb = new CAnimKnob (r, this, kHiVerb, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
	getFrame()->addView (knobHiVerb);
	getFrame()->remember();
	
	

	
	
    //--CTextLabel--------------------------------------
    //Label Mode
    LabelSize (0, 0, knob_red_blue->getWidth (), tDepth);
    LabelSize.offset (hPos+cSep, ePos+lOffset);
    labelMode = new CTextLabel (LabelSize, 0, 0, kCenterText); 
    labelMode->setFont (kNormalFontSmall); 
    labelMode->setFontColor (kLabelText); 
    labelMode->setBackColor (kBlank); 
    labelMode->setFrameColor (kBlank);
    labelMode->setText("Mode");
    getFrame()->addView (labelMode);
    getFrame()->remember();
	
	//Label Width
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelWidth = new CTextLabel (LabelSize, 0, 0, kCenterText); 
    labelWidth->setFont (kNormalFontSmall); 
    labelWidth->setFontColor (kLabelText); 
    labelWidth->setBackColor (kBlank); 
    labelWidth->setFrameColor (kBlank);
    labelWidth->setText("Width");
    getFrame()->addView (labelWidth);
    getFrame()->remember();
	
	//Label Pattern
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelPattern->setFont (kNormalFontSmall); 
    labelPattern->setFontColor (kLabelText); 
    labelPattern->setBackColor (kBlank); 
    labelPattern->setFrameColor (kBlank);
    labelPattern->setText("Pattern");
    getFrame()->addView (labelPattern);
    getFrame()->remember();
	
	//Label RearVerb
	LabelSize.offset (2*knob_mode2->getWidth()+2*cSep+10, 0);
    labelRearVerb = new CTextLabel (LabelSize, 0, 0, kCenterText); 
    labelRearVerb->setFont (kNormalFontSmall); 
    labelRearVerb->setFontColor (kLabelText); 
    labelRearVerb->setBackColor (kBlank); 
    labelRearVerb->setFrameColor (kBlank);
    labelRearVerb->setText("RearVerb");
    getFrame()->addView (labelRearVerb);
    getFrame()->remember();
	
	//Label HiVerb
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelHiVerb = new CTextLabel (LabelSize, 0, 0, kCenterText); 
    labelHiVerb->setFont (kNormalFontSmall); 
    labelHiVerb->setFontColor (kLabelText); 
    labelHiVerb->setBackColor (kBlank); 
    labelHiVerb->setFrameColor (kBlank);
    labelHiVerb->setText("HiVerb");
    getFrame()->addView (labelHiVerb);
	getFrame()->remember();
	
	
	

	
	//Label Section
    LabelSize (0, 0, bControls->getWidth(), tDepthLarge);
    LabelSize.offset (hPos, ePos+tOffset);
    decoderLabel1 = new CTextLabel (LabelSize, 0, 0, kCenterText); 
    decoderLabel1->setFont (kNormalFontBig); 
    decoderLabel1->setFontColor (kLabelText); 
    decoderLabel1->setBackColor (kBlank); 
    decoderLabel1->setFrameColor (kBlank);
    decoderLabel1->setText("Stereo Decoding & Reverb");
    getFrame()->addView (decoderLabel1);
	getFrame()->remember();
	
	

	//--CTextLabel--------------------------------------
	//Mode Value
	DisplaySize (0, 0, knob_red_blue->getWidth (), tDepth);
	DisplaySize.offset (hPos+cSep, ePos+pOffset);
	paramMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramMode->setHoriAlign(kCenterText);
	paramMode->setFont (kNormalFontVerySmall); 
	paramMode->setFontColor (kDisplayText); 
	paramMode->setBackColor (kDisplayBackground); 
	paramMode->setFrameColor (kBlackCColor); 
	getFrame()->addView (paramMode);
    getFrame()->remember();

	
	//Width Value 
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText); 
	paramWidth->setHoriAlign(kCenterText);
	paramWidth->setFont (kNormalFontVerySmall); 
	paramWidth->setFontColor (kDisplayText); 
	paramWidth->setBackColor (kDisplayBackground); 
	paramWidth->setFrameColor (kBlackCColor); 
	getFrame()->addView (paramWidth);
    getFrame()->remember();
	
	//Pattern Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText); 
	paramPattern->setHoriAlign(kCenterText);
	paramPattern->setFont (kNormalFontVerySmall); 
	paramPattern->setFontColor (kDisplayText); 
	paramPattern->setBackColor (kDisplayBackground); 
	paramPattern->setFrameColor (kBlackCColor); 
	getFrame()->addView (paramPattern);
    getFrame()->remember();
    
	//RearVerb Value 
	DisplaySize.offset (2*knob_mode2->getWidth()+2*cSep+10, 0);
	paramRearVerb = new CTextLabel (DisplaySize, 0, 0, kCenterText); 
	paramRearVerb->setHoriAlign(kCenterText);
	paramRearVerb->setFont (kNormalFontVerySmall); 
	paramRearVerb->setFontColor (kDisplayText); 
	paramRearVerb->setBackColor (kDisplayBackground); 
	paramRearVerb->setFrameColor (kBlackCColor); 
	getFrame()->addView (paramRearVerb);
    getFrame()->remember();
	
	//HiVerb Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramHiVerb = new CTextLabel (DisplaySize, 0, 0, kCenterText); 
	paramHiVerb->setHoriAlign(kCenterText);
	paramHiVerb->setFont (kNormalFontVerySmall); 
	paramHiVerb->setFontColor (kDisplayText); 
	paramHiVerb->setBackColor (kDisplayBackground); 
	paramHiVerb->setFrameColor (kBlackCColor); 
	getFrame()->addView (paramHiVerb);
    getFrame()->remember();

    controls[kMode] = knobMode;
	controls[kWidth] = knobWidth;
	controls[kPattern] = knobPattern;
	controls[kRearVerb] = knobRearVerb;
	controls[kHiVerb] = knobHiVerb;    
    
    //Forget Label, Knobs etc.
    bControls->forget();
}



//------------------------------------------------------------------------------------
void MyEditor::twooneDisplay()
{
    //FIRST OFF - define a top coordinate
    int hPos = cSep;
    int ePos = 288;
    int hPos2 = cSep+37;
    int ePos2 = 150;
    
    
    bControls = new CBitmap ("controls.png");
    CRect controlSize = CRect (0, 0, bControls->getWidth (),bControls->getHeight ());
    controlSize.offset(cSep, cSep+(cSep+bControls->getHeight())*2);
	control_view = new CView (controlSize);
    control_view->setBackground (bControls);
    getFrame()->addView (control_view);
    getFrame()->remember();
    
    
    bControls2 = new CBitmap ("controls2.png");
    controlSize = CRect (0, 0, bControls2->getWidth (),bControls2->getHeight ());
    controlSize.offset(hPos2, ePos2);
	control_view2 = new CView (controlSize);
    control_view2->setBackground (bControls2);
    getFrame()->addView (control_view2);
    getFrame()->remember();
    
    
	//Mode
	r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
	r.offset(hPos+cSep,ePos+kOffset);
	knobMode = new CHorizontalSwitch (r, this, kMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
	getFrame()->addView (knobMode);
    getFrame()->remember();
	
	//Width
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobWidth = new CAnimKnob (r, this, kWidth, IMAGE, knob_red->getHeight () / IMAGE, knob_red, CPoint (0, 0));
	getFrame()->addView (knobWidth);
    getFrame()->remember();
	
	//Pattern
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobPattern = new CAnimKnob (r, this, kPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
	getFrame()->addView (knobPattern);
    getFrame()->remember();
    
	//RearVerb
    r.offset(2*knob_mode2->getWidth()+2*cSep+10, 0);
    knobRearVerb = new CAnimKnob (r, this, kRearVerb, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_red, CPoint (0, 0));
	getFrame()->addView (knobRearVerb);
    getFrame()->remember();
	
	//HiVerb
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobHiVerb = new CAnimKnob (r, this, kHiVerb, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
	getFrame()->addView (knobHiVerb);
    getFrame()->remember();
    
    //SubGain
    r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
	r.offset(hPos2+2*cSep+knob_mode2->getWidth (), ePos2+kOffset);
    knobSubGain = new CAnimKnob (r, this, kSubGain, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0));
	getFrame()->addView (knobSubGain);
    getFrame()->remember();
	
	//FC
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobFc = new CAnimKnob (r, this, kFc, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
	getFrame()->addView (knobFc);
	getFrame()->remember();
	
	
    
	
	
    //--CTextLabel--------------------------------------
    //Label Mode
    LabelSize (0, 0, knob_red_blue->getWidth (), tDepth);
    LabelSize.offset (hPos+cSep, ePos+lOffset);
    labelMode = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelMode->setFont (kNormalFontSmall);
    labelMode->setFontColor (kLabelText);
    labelMode->setBackColor (kBlank);
    labelMode->setFrameColor (kBlank);
    labelMode->setText("Mode");
    getFrame()->addView (labelMode);
    getFrame()->remember();
	
	//Label Width
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelWidth = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelWidth->setFont (kNormalFontSmall);
    labelWidth->setFontColor (kLabelText);
    labelWidth->setBackColor (kBlank);
    labelWidth->setFrameColor (kBlank);
    labelWidth->setText("Width");
    getFrame()->addView (labelWidth);
    getFrame()->remember();
	
	//Label Pattern
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelPattern->setFont (kNormalFontSmall);
    labelPattern->setFontColor (kLabelText);
    labelPattern->setBackColor (kBlank);
    labelPattern->setFrameColor (kBlank);
    labelPattern->setText("Pattern");
    getFrame()->addView (labelPattern);
    getFrame()->remember();
	
	//Label RearVerb
	LabelSize.offset (2*knob_mode2->getWidth()+2*cSep+10, 0);
    labelRearVerb = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelRearVerb->setFont (kNormalFontSmall);
    labelRearVerb->setFontColor (kLabelText);
    labelRearVerb->setBackColor (kBlank);
    labelRearVerb->setFrameColor (kBlank);
    labelRearVerb->setText("RearVerb");
    getFrame()->addView (labelRearVerb);
    getFrame()->remember();
	
	//Label HiVerb
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelHiVerb = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelHiVerb->setFont (kNormalFontSmall);
    labelHiVerb->setFontColor (kLabelText);
    labelHiVerb->setBackColor (kBlank);
    labelHiVerb->setFrameColor (kBlank);
    labelHiVerb->setText("HiVerb");
    getFrame()->addView (labelHiVerb);
    getFrame()->remember();
    
    //Label SubGain
    LabelSize(0, 0, knob_mode2->getWidth (), tDepth);
	LabelSize.offset (hPos2+2*cSep+knob_mode2->getWidth (), ePos2+lOffset);
    labelSubGain = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelSubGain->setFont (kNormalFontSmall);
    labelSubGain->setFontColor (kLabelText);
    labelSubGain->setBackColor (kBlank);
    labelSubGain->setFrameColor (kBlank);
    labelSubGain->setText("SubGain");
    getFrame()->addView (labelSubGain);
    getFrame()->remember();
	
	//Label Fc
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelFc = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelFc->setFont (kNormalFontSmall);
    labelFc->setFontColor (kLabelText);
    labelFc->setBackColor (kBlank);
    labelFc->setFrameColor (kBlank);
    labelFc->setText("xOver");
    getFrame()->addView (labelFc);
	getFrame()->remember();
	
	
	
    
	
	//Label Section
    LabelSize (0, 0, bControls2->getWidth(), tDepthLarge);
    LabelSize.offset (hPos2, ePos2+tOffset);
    decoderLabel1 = new CTextLabel (LabelSize, 0, 0, kCenterText);
    decoderLabel1->setFont (kNormalFontBig);
    decoderLabel1->setFontColor (kLabelText);
    decoderLabel1->setBackColor (kBlank);
    decoderLabel1->setFrameColor (kBlank);
    decoderLabel1->setText("2.1 Decoding & Reverb");
    getFrame()->addView (decoderLabel1);
	getFrame()->remember();
	
	
    
	//--CTextLabel--------------------------------------
	//Mode Value
	DisplaySize (0, 0, knob_red_blue->getWidth (), tDepth);
	DisplaySize.offset (hPos+cSep, ePos+pOffset);
	paramMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramMode->setHoriAlign(kCenterText);
	paramMode->setFont (kNormalFontVerySmall);
	paramMode->setFontColor (kDisplayText);
	paramMode->setBackColor (kDisplayBackground);
	paramMode->setFrameColor (kBlackCColor);
	getFrame()->addView (paramMode);
    getFrame()->remember();
	
	//Width Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramWidth->setHoriAlign(kCenterText);
	paramWidth->setFont (kNormalFontVerySmall);
	paramWidth->setFontColor (kDisplayText);
	paramWidth->setBackColor (kDisplayBackground);
	paramWidth->setFrameColor (kBlackCColor);
	getFrame()->addView (paramWidth);
    getFrame()->remember();
	
	//Pattern Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramPattern->setHoriAlign(kCenterText);
	paramPattern->setFont (kNormalFontVerySmall);
	paramPattern->setFontColor (kDisplayText);
	paramPattern->setBackColor (kDisplayBackground);
	paramPattern->setFrameColor (kBlackCColor);
	getFrame()->addView (paramPattern);
    getFrame()->remember();
    
	//RearVerb Value
	DisplaySize.offset (2*knob_mode2->getWidth()+2*cSep+10, 0);
	paramRearVerb = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramRearVerb->setHoriAlign(kCenterText);
	paramRearVerb->setFont (kNormalFontVerySmall);
	paramRearVerb->setFontColor (kDisplayText);
	paramRearVerb->setBackColor (kDisplayBackground);
	paramRearVerb->setFrameColor (kBlackCColor);
	getFrame()->addView (paramRearVerb);
    getFrame()->remember();
	
	//HiVerb Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramHiVerb = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramHiVerb->setHoriAlign(kCenterText);
	paramHiVerb->setFont (kNormalFontVerySmall);
	paramHiVerb->setFontColor (kDisplayText);
	paramHiVerb->setBackColor (kDisplayBackground);
	paramHiVerb->setFrameColor (kBlackCColor);
	getFrame()->addView (paramHiVerb);
    getFrame()->remember();
    
    //SubGain Value
    DisplaySize(0, 0, knob_mode2->getWidth (), tDepth);
	DisplaySize.offset(hPos2+2*cSep+knob_mode2->getWidth (), ePos2+pOffset);
	paramSubGain = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramSubGain->setHoriAlign(kCenterText);
	paramSubGain->setFont (kNormalFontVerySmall);
	paramSubGain->setFontColor (kDisplayText);
	paramSubGain->setBackColor (kDisplayBackground);
	paramSubGain->setFrameColor (kBlackCColor);
	getFrame()->addView (paramSubGain);
    getFrame()->remember();
	
	//Fc Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramFc = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramFc->setHoriAlign(kCenterText);
	paramFc->setFont (kNormalFontVerySmall);
	paramFc->setFontColor (kDisplayText);
	paramFc->setBackColor (kDisplayBackground);
	paramFc->setFrameColor (kBlackCColor);
	getFrame()->addView (paramFc);
    getFrame()->remember();
    
    controls[kMode] = knobMode;
	controls[kWidth] = knobWidth;
	controls[kPattern] = knobPattern;
	controls[kRearVerb] = knobRearVerb;
	controls[kHiVerb] = knobHiVerb;
    controls[kSubGain] = knobSubGain;
    controls[kFc] = knobFc;
    
    
    //Forget Label, Knobs etc.
    bControls->forget();
    bControls2->forget();
}



//------------------------------------------------------------------------------------
void MyEditor::fourDisplay()
{
    //FIRST OFF - define a top coordinate
    int hPos = cSep;
    int ePos = 288;
    
    
    bControls = new CBitmap ("controls.png");
    CRect controlSize = CRect (0, 0, bControls->getWidth (),bControls->getHeight ());
    controlSize.offset(cSep, cSep+(cSep+bControls->getHeight())*2);
	control_view = new CView (controlSize);
    control_view->setBackground (bControls);
    getFrame()->addView (control_view);
    getFrame()->remember();
    
    
    
	//Mode
	r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
	r.offset(hPos+cSep,ePos+kOffset);
	knobMode = new CHorizontalSwitch (r, this, kMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
	getFrame()->addView (knobMode);
    getFrame()->remember();
	
	//Width
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobWidth = new CAnimKnob (r, this, kWidth, IMAGE, knob_red->getHeight () / IMAGE, knob_red, CPoint (0, 0));
	getFrame()->addView (knobWidth);
    getFrame()->remember();
	
	//Pattern
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobPattern = new CAnimKnob (r, this, kPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
	getFrame()->addView (knobPattern);
    getFrame()->remember();
    
    
    //Surround Mode
	r.offset(knob_mode2->getWidth()+cSep+10, 0);
	knobSurroundMode = new CHorizontalSwitch (r, this, kSurroundMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
	getFrame()->addView (knobSurroundMode);
    getFrame()->remember();
    
	//Surround Width
    r.offset(knob_mode2->getWidth()+cSep, 0);
    knobSurroundWidth = new CAnimKnob (r, this, kSurroundWidth, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_red, CPoint (0, 0));
	getFrame()->addView (knobSurroundWidth);
    getFrame()->remember();
	
	//Surround Pattern
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobSurroundPattern = new CAnimKnob (r, this, kSurroundPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
	getFrame()->addView (knobSurroundPattern);
    getFrame()->remember();
    
    //Surround Gain
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobSurroundGain = new CAnimKnob (r, this, kSurroundGain, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0));
	getFrame()->addView (knobSurroundGain);
	getFrame()->remember();
	
	
    
	
	
    //--CTextLabel--------------------------------------
    //Label Mode
    LabelSize (0, 0, knob_red_blue->getWidth (), tDepth);
    LabelSize.offset (hPos+cSep, ePos+lOffset);
    labelMode = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelMode->setFont (kNormalFontSmall);
    labelMode->setFontColor (kLabelText);
    labelMode->setBackColor (kBlank);
    labelMode->setFrameColor (kBlank);
    labelMode->setText("Mode");
    getFrame()->addView (labelMode);
    getFrame()->remember();
	
	//Label Width
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelWidth = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelWidth->setFont (kNormalFontSmall);
    labelWidth->setFontColor (kLabelText);
    labelWidth->setBackColor (kBlank);
    labelWidth->setFrameColor (kBlank);
    labelWidth->setText("Width");
    getFrame()->addView (labelWidth);
    getFrame()->remember();
	
	//Label Pattern
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelPattern->setFont (kNormalFontSmall);
    labelPattern->setFontColor (kLabelText);
    labelPattern->setBackColor (kBlank);
    labelPattern->setFrameColor (kBlank);
    labelPattern->setText("Pattern");
    getFrame()->addView (labelPattern);
    getFrame()->remember();
	
	//Label Surround Mode
	LabelSize.offset (knob_mode2->getWidth()+cSep+10, 0);
    labelSurMode = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelSurMode->setFont (kNormalFontSmall);
    labelSurMode->setFontColor (kLabelText);
    labelSurMode->setBackColor (kBlank);
    labelSurMode->setFrameColor (kBlank);
    labelSurMode->setText("SurMode");
    getFrame()->addView (labelSurMode);
    getFrame()->remember();
	
	//Label Surround Width
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelSurWidth = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelSurWidth->setFont (kNormalFontSmall);
    labelSurWidth->setFontColor (kLabelText);
    labelSurWidth->setBackColor (kBlank);
    labelSurWidth->setFrameColor (kBlank);
    labelSurWidth->setText("SurWidth");
    getFrame()->addView (labelSurWidth);
    getFrame()->remember();
    
    //Label Surround Pattern
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelSurPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelSurPattern->setFont (kNormalFontSmall);
    labelSurPattern->setFontColor (kLabelText);
    labelSurPattern->setBackColor (kBlank);
    labelSurPattern->setFrameColor (kBlank);
    labelSurPattern->setText("SurPattern");
    getFrame()->addView (labelSurPattern);
    getFrame()->remember();
    
    //Label Surround Gain
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelSurGain = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelSurGain->setFont (kNormalFontSmall);
    labelSurGain->setFontColor (kLabelText);
    labelSurGain->setBackColor (kBlank);
    labelSurGain->setFrameColor (kBlank);
    labelSurGain->setText("SurGain");
    getFrame()->addView (labelSurGain);
	getFrame()->remember();
	
	
    
	
	//Label Section
    LabelSize (0, 0, bControls->getWidth(), tDepthLarge);
    LabelSize.offset (hPos, ePos+tOffset);
    decoderLabel1 = new CTextLabel (LabelSize, 0, 0, kCenterText);
    decoderLabel1->setFont (kNormalFontBig);
    decoderLabel1->setFontColor (kLabelText);
    decoderLabel1->setBackColor (kBlank);
    decoderLabel1->setFrameColor (kBlank);
    decoderLabel1->setText("4.0 Decoding");
    getFrame()->addView (decoderLabel1);
	getFrame()->remember();
	
	
    
	//--CTextLabel--------------------------------------
	//Mode Value
	DisplaySize (0, 0, knob_red_blue->getWidth (), tDepth);
	DisplaySize.offset (hPos+cSep, ePos+pOffset);
	paramMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramMode->setHoriAlign(kCenterText);
	paramMode->setFont (kNormalFontVerySmall);
	paramMode->setFontColor (kDisplayText);
	paramMode->setBackColor (kDisplayBackground);
	paramMode->setFrameColor (kBlackCColor);
	getFrame()->addView (paramMode);
    getFrame()->remember();
	
	//Width Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramWidth->setHoriAlign(kCenterText);
	paramWidth->setFont (kNormalFontVerySmall);
	paramWidth->setFontColor (kDisplayText);
	paramWidth->setBackColor (kDisplayBackground);
	paramWidth->setFrameColor (kBlackCColor);
	getFrame()->addView (paramWidth);
    getFrame()->remember();
	
	//Pattern Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramPattern->setHoriAlign(kCenterText);
	paramPattern->setFont (kNormalFontVerySmall);
	paramPattern->setFontColor (kDisplayText);
	paramPattern->setBackColor (kDisplayBackground);
	paramPattern->setFrameColor (kBlackCColor);
	getFrame()->addView (paramPattern);
    getFrame()->remember();
    
	//SurMode Value
	DisplaySize.offset (knob_mode2->getWidth()+cSep+10, 0);
	paramSurMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramSurMode->setHoriAlign(kCenterText);
	paramSurMode->setFont (kNormalFontVerySmall);
	paramSurMode->setFontColor (kDisplayText);
	paramSurMode->setBackColor (kDisplayBackground);
	paramSurMode->setFrameColor (kBlackCColor);
	getFrame()->addView (paramSurMode);
    getFrame()->remember();
	
	//SurWidth Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramSurWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramSurWidth->setHoriAlign(kCenterText);
	paramSurWidth->setFont (kNormalFontVerySmall);
	paramSurWidth->setFontColor (kDisplayText);
	paramSurWidth->setBackColor (kDisplayBackground);
	paramSurWidth->setFrameColor (kBlackCColor);
	getFrame()->addView (paramSurWidth);
    getFrame()->remember();
    
    //SurPattern Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramSurPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramSurPattern->setHoriAlign(kCenterText);
	paramSurPattern->setFont (kNormalFontVerySmall);
	paramSurPattern->setFontColor (kDisplayText);
	paramSurPattern->setBackColor (kDisplayBackground);
	paramSurPattern->setFrameColor (kBlackCColor);
	getFrame()->addView (paramSurPattern);
    getFrame()->remember();
    
    //SurWidth Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramSurGain = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramSurGain->setHoriAlign(kCenterText);
	paramSurGain->setFont (kNormalFontVerySmall);
	paramSurGain->setFontColor (kDisplayText);
	paramSurGain->setBackColor (kDisplayBackground);
	paramSurGain->setFrameColor (kBlackCColor);
	getFrame()->addView (paramSurGain);
    getFrame()->remember();
    
    controls[kMode] = knobMode;
	controls[kWidth] = knobWidth;
	controls[kPattern] = knobPattern;
    controls[kSurroundMode] = knobSurroundMode;
    controls[kSurroundPattern] = knobSurroundPattern;
    controls[kSurroundWidth] = knobSurroundWidth;
    controls[kSurroundGain] = knobSurroundGain;
    
    //Forget Label, Knobs etc.
    bControls->forget();
}





//------------------------------------------------------------------------------------
void MyEditor::fiveDisplay()
{
    //FIRST OFF - define a top coordinate
    int hPos = cSep;
    int ePos = 288;
    int hPos2 = cSep+37;
    int ePos2 = 150;
    
    
    bControls = new CBitmap ("controls.png");
    CRect controlSize = CRect (0, 0, bControls->getWidth (),bControls->getHeight ());
    controlSize.offset(cSep, cSep+(cSep+bControls->getHeight())*2);
	control_view = new CView (controlSize);
    control_view->setBackground (bControls);
    getFrame()->addView (control_view);
    getFrame()->remember();
    
    bControls2 = new CBitmap ("controls2.png");
    controlSize = CRect (0, 0, bControls2->getWidth (),bControls2->getHeight ());
    controlSize.offset(hPos2, ePos2);
	control_view2 = new CView (controlSize);
    control_view2->setBackground (bControls2);
    getFrame()->addView (control_view2);
    getFrame()->remember();
    
    
	//Mode
	r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
	r.offset(hPos+cSep,ePos+kOffset);
	knobMode = new CHorizontalSwitch (r, this, kMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
	getFrame()->addView (knobMode);
    getFrame()->remember();
	
	//Width
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobWidth = new CAnimKnob (r, this, kWidth, IMAGE, knob_red->getHeight () / IMAGE, knob_red, CPoint (0, 0));
	getFrame()->addView (knobWidth);
    getFrame()->remember();
	
	//Pattern
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobPattern = new CAnimKnob (r, this, kPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
	getFrame()->addView (knobPattern);
    getFrame()->remember();
    
    
    //Surround Mode
	r.offset(knob_mode2->getWidth()+cSep+10, 0);
	knobSurroundMode = new CHorizontalSwitch (r, this, kSurroundMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
	getFrame()->addView (knobSurroundMode);
    getFrame()->remember();
    
	//Surround Width
    r.offset(knob_mode2->getWidth()+cSep, 0);
    knobSurroundWidth = new CAnimKnob (r, this, kSurroundWidth, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_red, CPoint (0, 0));
	getFrame()->addView (knobSurroundWidth);
    getFrame()->remember();
	
	//Surround Pattern
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobSurroundPattern = new CAnimKnob (r, this, kSurroundPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
	getFrame()->addView (knobSurroundPattern);
    getFrame()->remember();
    
    //Surround Gain
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobSurroundGain = new CAnimKnob (r, this, kSurroundGain, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0));
	getFrame()->addView (knobSurroundGain);
    getFrame()->remember();
    
    
    
    
    //Centre Pattern
    r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
	r.offset(hPos2+2*cSep+knob_mode2->getWidth (), ePos2+kOffset);
    knobCentrePattern = new CAnimKnob (r, this, kCentrePattern, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
	getFrame()->addView (knobCentrePattern);
    getFrame()->remember();
    
    //Centre Gain
	r.offset(knob_mode2->getWidth()+cSep, 0);
    knobCentreGain = new CAnimKnob (r, this, kCentreGain, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0));
	getFrame()->addView (knobCentreGain);
    getFrame()->remember();
	
	
	
    
	
	
    //--CTextLabel--------------------------------------
    //Label Mode
    LabelSize (0, 0, knob_red_blue->getWidth (), tDepth);
    LabelSize.offset (hPos+cSep, ePos+lOffset);
    labelMode = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelMode->setFont (kNormalFontSmall);
    labelMode->setFontColor (kLabelText);
    labelMode->setBackColor (kBlank);
    labelMode->setFrameColor (kBlank);
    labelMode->setText("Mode");
    getFrame()->addView (labelMode);
    getFrame()->remember();
	
	//Label Width
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelWidth = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelWidth->setFont (kNormalFontSmall);
    labelWidth->setFontColor (kLabelText);
    labelWidth->setBackColor (kBlank);
    labelWidth->setFrameColor (kBlank);
    labelWidth->setText("Width");
    getFrame()->addView (labelWidth);
    getFrame()->remember();
	
	//Label Pattern
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelPattern->setFont (kNormalFontSmall);
    labelPattern->setFontColor (kLabelText);
    labelPattern->setBackColor (kBlank);
    labelPattern->setFrameColor (kBlank);
    labelPattern->setText("Pattern");
    getFrame()->addView (labelPattern);
    getFrame()->remember();
	
	//Label Surround Mode
	LabelSize.offset (knob_mode2->getWidth()+cSep+10, 0);
    labelSurMode = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelSurMode->setFont (kNormalFontSmall);
    labelSurMode->setFontColor (kLabelText);
    labelSurMode->setBackColor (kBlank);
    labelSurMode->setFrameColor (kBlank);
    labelSurMode->setText("SurMode");
    getFrame()->addView (labelSurMode);
    getFrame()->remember();
	
	//Label Surround Width
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelSurWidth = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelSurWidth->setFont (kNormalFontSmall);
    labelSurWidth->setFontColor (kLabelText);
    labelSurWidth->setBackColor (kBlank);
    labelSurWidth->setFrameColor (kBlank);
    labelSurWidth->setText("SurWidth");
    getFrame()->addView (labelSurWidth);
    getFrame()->remember();
    
    //Label Surround Pattern
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelSurPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelSurPattern->setFont (kNormalFontSmall);
    labelSurPattern->setFontColor (kLabelText);
    labelSurPattern->setBackColor (kBlank);
    labelSurPattern->setFrameColor (kBlank);
    labelSurPattern->setText("SurPattern");
    getFrame()->addView (labelSurPattern);
    getFrame()->remember();
    
    //Label Surround Gain
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelSurGain = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelSurGain->setFont (kNormalFontSmall);
    labelSurGain->setFontColor (kLabelText);
    labelSurGain->setBackColor (kBlank);
    labelSurGain->setFrameColor (kBlank);
    labelSurGain->setText("SurGain");
    getFrame()->addView (labelSurGain);
    getFrame()->remember();
    
    
    //Label Centre Pattern
    LabelSize(0, 0, knob_mode2->getWidth (), tDepth);
	LabelSize.offset(hPos2+2*cSep+knob_mode2->getWidth (), ePos2+lOffset);
    labelCtrPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelCtrPattern->setFont (kNormalFontSmall);
    labelCtrPattern->setFontColor (kLabelText);
    labelCtrPattern->setBackColor (kBlank);
    labelCtrPattern->setFrameColor (kBlank);
    labelCtrPattern->setText("CtrPattern");
    getFrame()->addView (labelCtrPattern);
    getFrame()->remember();
    
    //Label Centre Gain
    LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelCtreGain = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelCtreGain->setFont (kNormalFontSmall);
    labelCtreGain->setFontColor (kLabelText);
    labelCtreGain->setBackColor (kBlank);
    labelCtreGain->setFrameColor (kBlank);
    labelCtreGain->setText("CtrGain");
    getFrame()->addView (labelCtreGain);
	getFrame()->remember();
	
	
	
    
	
	//Label Section
    LabelSize (0, 0, bControls2->getWidth(), tDepthLarge);
    LabelSize.offset (hPos2, ePos2+tOffset);
    decoderLabel1 = new CTextLabel (LabelSize, 0, 0, kCenterText);
    decoderLabel1->setFont (kNormalFontBig);
    decoderLabel1->setFontColor (kLabelText);
    decoderLabel1->setBackColor (kBlank);
    decoderLabel1->setFrameColor (kBlank);
    decoderLabel1->setText("5.0 Decoding");
    getFrame()->addView (decoderLabel1);
	getFrame()->remember();
	
	
    
	//--CTextLabel--------------------------------------
	//Mode Value
	DisplaySize (0, 0, knob_red_blue->getWidth (), tDepth);
	DisplaySize.offset (hPos+cSep, ePos+pOffset);
	paramMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramMode->setHoriAlign(kCenterText);
	paramMode->setFont (kNormalFontVerySmall);
	paramMode->setFontColor (kDisplayText);
	paramMode->setBackColor (kDisplayBackground);
	paramMode->setFrameColor (kBlackCColor);
	getFrame()->addView (paramMode);
    getFrame()->remember();
	
	//Width Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramWidth->setHoriAlign(kCenterText);
	paramWidth->setFont (kNormalFontVerySmall);
	paramWidth->setFontColor (kDisplayText);
	paramWidth->setBackColor (kDisplayBackground);
	paramWidth->setFrameColor (kBlackCColor);
	getFrame()->addView (paramWidth);
    getFrame()->remember();
	
	//Pattern Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramPattern->setHoriAlign(kCenterText);
	paramPattern->setFont (kNormalFontVerySmall);
	paramPattern->setFontColor (kDisplayText);
	paramPattern->setBackColor (kDisplayBackground);
	paramPattern->setFrameColor (kBlackCColor);
	getFrame()->addView (paramPattern);
    getFrame()->remember();
    
	//SurMode Value
	DisplaySize.offset (knob_mode2->getWidth()+cSep+10, 0);
	paramSurMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramSurMode->setHoriAlign(kCenterText);
	paramSurMode->setFont (kNormalFontVerySmall);
	paramSurMode->setFontColor (kDisplayText);
	paramSurMode->setBackColor (kDisplayBackground);
	paramSurMode->setFrameColor (kBlackCColor);
	getFrame()->addView (paramSurMode);
    getFrame()->remember();
	
	//SurWidth Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramSurWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramSurWidth->setHoriAlign(kCenterText);
	paramSurWidth->setFont (kNormalFontVerySmall);
	paramSurWidth->setFontColor (kDisplayText);
	paramSurWidth->setBackColor (kDisplayBackground);
	paramSurWidth->setFrameColor (kBlackCColor);
	getFrame()->addView (paramSurWidth);
    getFrame()->remember();
    
    //SurPattern Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramSurPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramSurPattern->setHoriAlign(kCenterText);
	paramSurPattern->setFont (kNormalFontVerySmall);
	paramSurPattern->setFontColor (kDisplayText);
	paramSurPattern->setBackColor (kDisplayBackground);
	paramSurPattern->setFrameColor (kBlackCColor);
	getFrame()->addView (paramSurPattern);
    getFrame()->remember();
    
    //SurWidth Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramSurGain = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramSurGain->setHoriAlign(kCenterText);
	paramSurGain->setFont (kNormalFontVerySmall);
	paramSurGain->setFontColor (kDisplayText);
	paramSurGain->setBackColor (kDisplayBackground);
	paramSurGain->setFrameColor (kBlackCColor);
	getFrame()->addView (paramSurGain);
    getFrame()->remember();
    
    
    //CtrPattern Value
    DisplaySize(0, 0, knob_mode2->getWidth (), tDepth);
	DisplaySize.offset(hPos2+2*cSep+knob_mode2->getWidth (), ePos2+pOffset);
	paramCtrPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramCtrPattern->setHoriAlign(kCenterText);
	paramCtrPattern->setFont (kNormalFontVerySmall);
	paramCtrPattern->setFontColor (kDisplayText);
	paramCtrPattern->setBackColor (kDisplayBackground);
	paramCtrPattern->setFrameColor (kBlackCColor);
	getFrame()->addView (paramCtrPattern);
    getFrame()->remember();
    
    //CtrGain Value
	DisplaySize.offset(knob_red_blue->getWidth()+cSep, 0);
	paramCtrGain = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramCtrGain->setHoriAlign(kCenterText);
	paramCtrGain->setFont (kNormalFontVerySmall);
	paramCtrGain->setFontColor (kDisplayText);
	paramCtrGain->setBackColor (kDisplayBackground);
	paramCtrGain->setFrameColor (kBlackCColor);
	getFrame()->addView (paramCtrGain);
    getFrame()->remember();
    
    controls[kMode] = knobMode;
	controls[kWidth] = knobWidth;
	controls[kPattern] = knobPattern;
    controls[kCentrePattern] = knobCentrePattern;
    controls[kCentreGain] =knobCentreGain;
    controls[kSurroundMode] = knobSurroundMode;
    controls[kSurroundPattern] = knobSurroundPattern;
    controls[kSurroundWidth] = knobSurroundWidth;
    controls[kSurroundGain] = knobSurroundGain;
    
    //Forget Label, Knobs etc.
    bControls->forget();
    bControls2->forget();
}






//------------------------------------------------------------------------------------
void MyEditor::fiveoneDisplay()
{
    //FIRST OFF - define a top coordinate
    int hPos = cSep;
    int ePos = 288;
    int hPos2 = cSep+37;
    int ePos2 = 150;
    
    
    bControls = new CBitmap ("controls.png");
    CRect controlSize = CRect (0, 0, bControls->getWidth (),bControls->getHeight ());
    controlSize.offset(cSep, cSep+(cSep+bControls->getHeight())*2);
	control_view = new CView (controlSize);
    control_view->setBackground (bControls);
    getFrame()->addView (control_view);
    getFrame()->remember();
    
    bControls2 = new CBitmap ("controls2.png");
    controlSize = CRect (0, 0, bControls2->getWidth (),bControls2->getHeight ());
    controlSize.offset(hPos2, ePos2);
	control_view2 = new CView (controlSize);
    control_view2->setBackground (bControls2);
    getFrame()->addView (control_view2);
    getFrame()->remember();
    
    
	//Mode
	r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
	r.offset(hPos+cSep,ePos+kOffset);
	knobMode = new CHorizontalSwitch (r, this, kMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
	getFrame()->addView (knobMode);
    getFrame()->remember();
	
	//Width
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobWidth = new CAnimKnob (r, this, kWidth, IMAGE, knob_red->getHeight () / IMAGE, knob_red, CPoint (0, 0));
	getFrame()->addView (knobWidth);
    getFrame()->remember();
	
	//Pattern
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobPattern = new CAnimKnob (r, this, kPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
	getFrame()->addView (knobPattern);
    getFrame()->remember();
    
    
    //Surround Mode
	r.offset(knob_mode2->getWidth()+cSep+10, 0);
	knobSurroundMode = new CHorizontalSwitch (r, this, kSurroundMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
	getFrame()->addView (knobSurroundMode);
    getFrame()->remember();
    
	//Surround Width
    r.offset(knob_mode2->getWidth()+cSep, 0);
    knobSurroundWidth = new CAnimKnob (r, this, kSurroundWidth, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_red, CPoint (0, 0));
	getFrame()->addView (knobSurroundWidth);
    getFrame()->remember();
	
	//Surround Pattern
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobSurroundPattern = new CAnimKnob (r, this, kSurroundPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
	getFrame()->addView (knobSurroundPattern);
    getFrame()->remember();
    
    //Surround Gain
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobSurroundGain = new CAnimKnob (r, this, kSurroundGain, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0));
	getFrame()->addView (knobSurroundGain);
    getFrame()->remember();
    
    
    
    
    
    //Centre Pattern
    r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
	r.offset(hPos2+cSep, ePos2+kOffset);
    knobCentrePattern = new CAnimKnob (r, this, kCentrePattern, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
	getFrame()->addView (knobCentrePattern);
    getFrame()->remember();
    
    //Centre Gain
	r.offset(knob_mode2->getWidth()+cSep, 0);
    knobCentreGain = new CAnimKnob (r, this, kCentreGain, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0));
	getFrame()->addView (knobCentreGain);
    getFrame()->remember();
    
    //SubGain
    r.offset(knob_mode2->getWidth()+cSep, 0);
    knobSubGain = new CAnimKnob (r, this, kSubGain, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0));
	getFrame()->addView (knobSubGain);
    getFrame()->remember();

	//FC
	r.offset(knob_mode2->getWidth()+cSep, 0);
	knobFc = new CAnimKnob (r, this, kFc, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
	getFrame()->addView (knobFc);
    getFrame()->remember();
	
	
	
    
	
	
    //--CTextLabel--------------------------------------
    //Label Mode
    LabelSize (0, 0, knob_red_blue->getWidth (), tDepth);
    LabelSize.offset (hPos+cSep, ePos+lOffset);
    labelMode = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelMode->setFont (kNormalFontSmall);
    labelMode->setFontColor (kLabelText);
    labelMode->setBackColor (kBlank);
    labelMode->setFrameColor (kBlank);
    labelMode->setText("Mode");
    getFrame()->addView (labelMode);
    getFrame()->remember();
	
	//Label Width
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelWidth = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelWidth->setFont (kNormalFontSmall);
    labelWidth->setFontColor (kLabelText);
    labelWidth->setBackColor (kBlank);
    labelWidth->setFrameColor (kBlank);
    labelWidth->setText("Width");
    getFrame()->addView (labelWidth);
    getFrame()->remember();
	
	//Label Pattern
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelPattern->setFont (kNormalFontSmall);
    labelPattern->setFontColor (kLabelText);
    labelPattern->setBackColor (kBlank);
    labelPattern->setFrameColor (kBlank);
    labelPattern->setText("Pattern");
    getFrame()->addView (labelPattern);
    getFrame()->remember();
	
	//Label Surround Mode
	LabelSize.offset (knob_mode2->getWidth()+cSep+10, 0);
    labelSurMode = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelSurMode->setFont (kNormalFontSmall);
    labelSurMode->setFontColor (kLabelText);
    labelSurMode->setBackColor (kBlank);
    labelSurMode->setFrameColor (kBlank);
    labelSurMode->setText("SurMode");
    getFrame()->addView (labelSurMode);
    getFrame()->remember();
	
	//Label Surround Width
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelSurWidth = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelSurWidth->setFont (kNormalFontSmall);
    labelSurWidth->setFontColor (kLabelText);
    labelSurWidth->setBackColor (kBlank);
    labelSurWidth->setFrameColor (kBlank);
    labelSurWidth->setText("SurWidth");
    getFrame()->addView (labelSurWidth);
    getFrame()->remember();
    
    //Label Surround Pattern
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelSurPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelSurPattern->setFont (kNormalFontSmall);
    labelSurPattern->setFontColor (kLabelText);
    labelSurPattern->setBackColor (kBlank);
    labelSurPattern->setFrameColor (kBlank);
    labelSurPattern->setText("SurPattern");
    getFrame()->addView (labelSurPattern);
    getFrame()->remember();
    
    //Label Surround Gain
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelSurGain = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelSurGain->setFont (kNormalFontSmall);
    labelSurGain->setFontColor (kLabelText);
    labelSurGain->setBackColor (kBlank);
    labelSurGain->setFrameColor (kBlank);
    labelSurGain->setText("SurGain");
    getFrame()->addView (labelSurGain);
    getFrame()->remember();
    
    
    //Label Centre Pattern
    LabelSize(0, 0, knob_mode2->getWidth (), tDepth);
	LabelSize.offset (hPos2+cSep, ePos2+lOffset);
    labelCtrPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelCtrPattern->setFont (kNormalFontSmall);
    labelCtrPattern->setFontColor (kLabelText);
    labelCtrPattern->setBackColor (kBlank);
    labelCtrPattern->setFrameColor (kBlank);
    labelCtrPattern->setText("CtrPattern");
    getFrame()->addView (labelCtrPattern);
    getFrame()->remember();
    
    //Label Centre Gain
    LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelCtreGain = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelCtreGain->setFont (kNormalFontSmall);
    labelCtreGain->setFontColor (kLabelText);
    labelCtreGain->setBackColor (kBlank);
    labelCtreGain->setFrameColor (kBlank);
    labelCtreGain->setText("CtrGain");
    getFrame()->addView (labelCtreGain);
    getFrame()->remember();
    
    //Label SubGain
    LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelSubGain = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelSubGain->setFont (kNormalFontSmall);
    labelSubGain->setFontColor (kLabelText);
    labelSubGain->setBackColor (kBlank);
    labelSubGain->setFrameColor (kBlank);
    labelSubGain->setText("SubGain");
    getFrame()->addView (labelSubGain);
    getFrame()->remember();

	//Label Fc
	LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
    labelFc = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelFc->setFont (kNormalFontSmall);
    labelFc->setFontColor (kLabelText);
    labelFc->setBackColor (kBlank);
    labelFc->setFrameColor (kBlank);
    labelFc->setText("xOver");
    getFrame()->addView (labelFc);
	getFrame()->remember();
	
	
	
    
	
	//Label Section
    LabelSize (0, 0, bControls2->getWidth(), tDepthLarge);
    LabelSize.offset (hPos2, ePos2+tOffset);
    decoderLabel1 = new CTextLabel (LabelSize, 0, 0, kCenterText);
    decoderLabel1->setFont (kNormalFontBig);
    decoderLabel1->setFontColor (kLabelText);
    decoderLabel1->setBackColor (kBlank);
    decoderLabel1->setFrameColor (kBlank);
    decoderLabel1->setText("5.1 Decoding");
    getFrame()->addView (decoderLabel1);
	getFrame()->remember();
	
	
    
	//--CTextLabel--------------------------------------
	//Mode Value
	DisplaySize (0, 0, knob_red_blue->getWidth (), tDepth);
	DisplaySize.offset (hPos+cSep, ePos+pOffset);
	paramMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramMode->setHoriAlign(kCenterText);
	paramMode->setFont (kNormalFontVerySmall);
	paramMode->setFontColor (kDisplayText);
	paramMode->setBackColor (kDisplayBackground);
	paramMode->setFrameColor (kBlackCColor);
	getFrame()->addView (paramMode);
    getFrame()->remember();
	
	//Width Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramWidth->setHoriAlign(kCenterText);
	paramWidth->setFont (kNormalFontVerySmall);
	paramWidth->setFontColor (kDisplayText);
	paramWidth->setBackColor (kDisplayBackground);
	paramWidth->setFrameColor (kBlackCColor);
	getFrame()->addView (paramWidth);
    getFrame()->remember();
	
	//Pattern Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramPattern->setHoriAlign(kCenterText);
	paramPattern->setFont (kNormalFontVerySmall);
	paramPattern->setFontColor (kDisplayText);
	paramPattern->setBackColor (kDisplayBackground);
	paramPattern->setFrameColor (kBlackCColor);
	getFrame()->addView (paramPattern);
    getFrame()->remember();
    
	//SurMode Value
	DisplaySize.offset (knob_mode2->getWidth()+cSep+10, 0);
	paramSurMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramSurMode->setHoriAlign(kCenterText);
	paramSurMode->setFont (kNormalFontVerySmall);
	paramSurMode->setFontColor (kDisplayText);
	paramSurMode->setBackColor (kDisplayBackground);
	paramSurMode->setFrameColor (kBlackCColor);
	getFrame()->addView (paramSurMode);
    getFrame()->remember();
	
	//SurWidth Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramSurWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramSurWidth->setHoriAlign(kCenterText);
	paramSurWidth->setFont (kNormalFontVerySmall);
	paramSurWidth->setFontColor (kDisplayText);
	paramSurWidth->setBackColor (kDisplayBackground);
	paramSurWidth->setFrameColor (kBlackCColor);
	getFrame()->addView (paramSurWidth);
    getFrame()->remember();
    
    //SurPattern Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramSurPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramSurPattern->setHoriAlign(kCenterText);
	paramSurPattern->setFont (kNormalFontVerySmall);
	paramSurPattern->setFontColor (kDisplayText);
	paramSurPattern->setBackColor (kDisplayBackground);
	paramSurPattern->setFrameColor (kBlackCColor);
	getFrame()->addView (paramSurPattern);
    getFrame()->remember();
    
    //SurWidth Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramSurGain = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramSurGain->setHoriAlign(kCenterText);
	paramSurGain->setFont (kNormalFontVerySmall);
	paramSurGain->setFontColor (kDisplayText);
	paramSurGain->setBackColor (kDisplayBackground);
	paramSurGain->setFrameColor (kBlackCColor);
	getFrame()->addView (paramSurGain);
    getFrame()->remember();
    
    
    //CtrPattern Value
    DisplaySize(0, 0, knob_mode2->getWidth (), tDepth);
	DisplaySize.offset(hPos2+cSep, ePos2+pOffset);
	paramCtrPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramCtrPattern->setHoriAlign(kCenterText);
	paramCtrPattern->setFont (kNormalFontVerySmall);
	paramCtrPattern->setFontColor (kDisplayText);
	paramCtrPattern->setBackColor (kDisplayBackground);
	paramCtrPattern->setFrameColor (kBlackCColor);
	getFrame()->addView (paramCtrPattern);
    getFrame()->remember();
    
    //CtrGain Value
	DisplaySize.offset(knob_red_blue->getWidth()+cSep, 0);
	paramCtrGain = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramCtrGain->setHoriAlign(kCenterText);
	paramCtrGain->setFont (kNormalFontVerySmall);
	paramCtrGain->setFontColor (kDisplayText);
	paramCtrGain->setBackColor (kDisplayBackground);
	paramCtrGain->setFrameColor (kBlackCColor);
	getFrame()->addView (paramCtrGain);
    getFrame()->remember();
    
    //SubGain Value
    DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramSubGain = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramSubGain->setHoriAlign(kCenterText);
	paramSubGain->setFont (kNormalFontVerySmall);
	paramSubGain->setFontColor (kDisplayText);
	paramSubGain->setBackColor (kDisplayBackground);
	paramSubGain->setFrameColor (kBlackCColor);
	getFrame()->addView (paramSubGain);
    getFrame()->remember();
	
	//Fc Value
	DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
	paramFc = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramFc->setHoriAlign(kCenterText);
	paramFc->setFont (kNormalFontVerySmall);
	paramFc->setFontColor (kDisplayText);
	paramFc->setBackColor (kDisplayBackground);
	paramFc->setFrameColor (kBlackCColor);
	getFrame()->addView (paramFc);
    getFrame()->remember();
    
    
    controls[kMode] = knobMode;
	controls[kWidth] = knobWidth;
	controls[kPattern] = knobPattern;
    controls[kCentrePattern] = knobCentrePattern;
    controls[kCentreGain] =knobCentreGain;
    controls[kSubGain] = knobSubGain;
    controls[kFc] = knobFc;
    controls[kSurroundMode] = knobSurroundMode;
    controls[kSurroundPattern] = knobSurroundPattern;
    controls[kSurroundWidth] = knobSurroundWidth;
    controls[kSurroundGain] = knobSurroundGain;
    
    //Forget Label, Knobs etc.
    bControls->forget();
    bControls2->forget();
}



//------------------------------------------------------------------------------------
void MyEditor::hellerDisplay()
{
    heller1 = new CTextLabel(control_view->getViewSize(), 0, 0, kCenterText);
	heller1->setBackColor(CColor(23,25,26,200));
    heller1->setFont (kNormalFontVeryBig);
    heller1->setFontColor (CColor (255,255,255,255));
    if (myPlot->decoder_mode5x==1) {
        heller1->setText("Heller 1 Decoder");
    }
    else if (myPlot->decoder_mode5x==2){
        heller1->setText("Heller 2 Decoder");
    }
    getFrame()->addView (heller1);
    getFrame()->remember();
    
    heller2 = new CTextLabel(control_view2->getViewSize(), 0, 0, kCenterText);
	heller2->setBackColor(CColor(23,25,26,200));
    heller2->setFont (kNormalFontVeryBig);
    heller2->setFontColor (CColor (255,255,255,255));
    getFrame()->addView (heller2);
    getFrame()->remember();
};



//------------------------------------------------------------------------------------
void MyEditor::nameDisplay(CFrame* newFrame)
{
    //FIRST OFF - define a top coordinate
    int hPos = cSep;
    int ePos = 426;
    
    
    bName = new CBitmap ("my_name.png");
    
    
    CRect nameSize = CRect (0, 0, bName->getWidth (),bName->getHeight ());
    nameSize.offset(hPos, ePos);
	CView* name_view = new CView (nameSize);
    name_view->setBackground (bName);
    newFrame->addView (name_view);
    newFrame->remember();
    
    LabelSize (0, 0, 160, tDepth);
    LabelSize.offset(hPos+cSep, ePos+cSep+tDepth+10);
    CTextLabel *vendor_version = new CTextLabel(LabelSize, 0, 0, kLeftText);
    CTextLabel *bitMode = new CTextLabel(LabelSize, 0, 0, kLeftText);
    
    char text[100];
    int i1=(int)floor(VERSION/1000.0);
    int i2= (int)floor((VERSION-i1*1000)/100.0);
    int i3= (int)floor((VERSION-i1*1000-i2*100)/10.0);
    int i4= (int)floor(VERSION-i1*1000-i2*100-i3*10);
    sprintf(text, "Version: %d.%d.%d.%d", i1, i2,i3,i4);
    vendor_version->setText(text);
    vendor_version->setFont (kNormalFontSmall); 
    vendor_version->setFontColor (kLabelText); 
    vendor_version->setHoriAlign(kLeftText);
    vendor_version->setBackColor (kBlank); 
    vendor_version->setFrameColor (kBlank);
    newFrame->addView (vendor_version);
    newFrame->remember();
    
    LabelSize.offset(0, -(tDepth+10));
    bitMode = new CTextLabel(LabelSize, 0, 0, kLeftText);
    sprintf(text,"Bit Mode: %d", (int)effect->getParameter(102));
    bitMode->setText(text);
    bitMode->setFont (kNormalFontSmall); 
    bitMode->setFontColor (kLabelText);
    bitMode->setHoriAlign(kLeftText);
    bitMode->setBackColor (kBlank); 
    bitMode->setFrameColor (kBlank);
    
    //Forget labels and background
    bName->forget ();
    vendor_version->forget();
    newFrame->addView (bitMode);
    newFrame->remember();
}




//------------------------------------------------------------------------------------
void MyEditor::plotDisplay(CFrame* newFrame)
{
    //FIRST OFF - define a top coordinate
    int hPos = 264;
    int ePos = cSep;
    
    bPlot = new CBitmap ("plot.png");
    
    
    CRect plotArea (0, 0, bPlot->getWidth (),bPlot->getHeight ());
    plotArea.offset(hPos, ePos);
    CView* plotBackground = new CView (plotArea);
    plotBackground->setBackground(bPlot);
    newFrame->addView (plotBackground);
    newFrame->remember();
	
    
    CRect plotSize (0, 0, bPlot->getWidth (), bPlot->getHeight ());
    plotSize.offset(hPos, ePos);
    myPlot = new polarPlot(plotSize);
    newFrame->addView (myPlot);
    newFrame->remember();
}


//------------------------------------------------------------------------------------
void MyEditor::settingsDisplay(CFrame* newFrame)
{
    //FIRST OFF - define a top coordinate
    int hPos = 402;
    int ePos = 150;
    
    bSettings = new CBitmap ("zoom.png");
    
    CRect plotArea (0, 0, bSettings->getWidth (),bSettings->getHeight ());
    plotArea.offset(hPos, ePos);
    CView* settingsBackground = new CView (plotArea);
    settingsBackground->setBackground(bSettings);
    newFrame->addView (settingsBackground);
    newFrame->remember();
   
    
    //Decoder Mode Knob
	r (0, 0, knob_mode5->getWidth (), knob_mode5->getHeight () / 5);
	r.offset(hPos+cSep, ePos+kOffset);
	knobDecoder = new CHorizontalSwitch (r, this, kDecoderMode, 5, knob_mode5->getHeight () / 5, 5, knob_mode5, CPoint (0, 0));
	newFrame->addView (knobDecoder);
    newFrame->remember();
    
    //Channel Order Knob
	r.offset(knob_mode5->getWidth()+cSep, 0);
	knobChannel = new CHorizontalSwitch (r, this, kChannelOrder, 2, knob_mode2b->getHeight () / 2, 2, knob_mode2b, CPoint (0, 0));
	newFrame->addView (knobChannel);
    newFrame->remember();
    
    
    
    //Label Decoder Mode
    LabelSize (0, 0, knob_mode5->getWidth (), tDepth);
    LabelSize.offset (hPos+cSep, ePos+lOffset);
    CTextLabel* labelDecoder = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelDecoder->setFont (kNormalFontSmall);
    labelDecoder->setFontColor (kLabelText);
    labelDecoder->setBackColor (kBlank);
    labelDecoder->setFrameColor (kBlank);
    labelDecoder->setText("Decoding");
    newFrame->addView (labelDecoder);
    newFrame->remember();
    
    //Label Channel Order
    LabelSize.offset (knob_mode5->getWidth ()+cSep, 0);
    CTextLabel* labelChannel = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelChannel->setFont (kNormalFontSmall);
    labelChannel->setFontColor (kLabelText);
    labelChannel->setBackColor (kBlank);
    labelChannel->setFrameColor (kBlank);
    labelChannel->setText("Channels");
    newFrame->addView (labelChannel);
    newFrame->remember();
    
    
    
    
    //Decoder Mode Value
	DisplaySize (0, 0, knob_mode5->getWidth (), tDepth);
	DisplaySize.offset (hPos+cSep, ePos+pOffset);
	paramDecoder = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramDecoder->setHoriAlign(kCenterText);
	paramDecoder->setFont (kNormalFontVerySmall);
	paramDecoder->setFontColor (kDisplayText);
	paramDecoder->setBackColor (kDisplayBackground);
	paramDecoder->setFrameColor (kBlackCColor);
	newFrame->addView (paramDecoder);
    newFrame->remember();
    
    //Channel Order Value
	DisplaySize.offset (knob_mode5->getWidth ()+cSep, 0);
	paramChannel = new CTextLabel (DisplaySize, 0, 0, kCenterText);
	paramChannel->setHoriAlign(kCenterText);
	paramChannel->setFont (kNormalFontVerySmall);
	paramChannel->setFontColor (kDisplayText);
	paramChannel->setBackColor (kDisplayBackground);
	paramChannel->setFrameColor (kBlackCColor);
	newFrame->addView (paramChannel);
    newFrame->remember();
    
    
    //Label Section
    LabelSize (0, 0, bSettings->getWidth (), tDepthLarge);
    LabelSize.offset (hPos, ePos+tOffset);
    CTextLabel* labelSettings = new CTextLabel (LabelSize, 0, 0, kCenterText);
    labelSettings->setFont (kNormalFontBig);
    labelSettings->setFontColor (kLabelText);
    labelSettings->setBackColor (kBlank);
    labelSettings->setFrameColor (kBlank);
    labelSettings->setText("Settings");
    newFrame->addView (labelSettings);
    newFrame->remember();
    
    //-- remember our controls so that we can sync them with the state of the effect
    controls[kDecoderMode] = knobDecoder;
    controls[kChannelOrder] = knobChannel;
    
    //Forget this section's Background, Knobs, Labels
    bSettings->forget();
    settingsBackground->forget();
    knobDecoder->forget();
    knobChannel->forget();
    labelDecoder->forget();
    labelChannel->forget();
    labelSettings->forget();
    paramDecoder->forget();
    paramChannel->forget();
}



//------------------------------------------------------------------------------------
void MyEditor::clearStereo()
{
    //Section Title
    getFrame()->removeView(decoderLabel1);
    //Knob Titles
    getFrame()->removeView(labelMode);
    getFrame()->removeView(labelWidth);
    getFrame()->removeView(labelPattern);
    getFrame()->removeView(labelRearVerb);
    getFrame()->removeView(labelHiVerb);
    //Knob Parameter Values
    getFrame()->removeView(paramMode);
    getFrame()->removeView(paramWidth);
    getFrame()->removeView(paramPattern);
    getFrame()->removeView(paramRearVerb);
    getFrame()->removeView(paramHiVerb);
    //Knobs
    getFrame()->removeView(knobMode);
    getFrame()->removeView(knobWidth);
    getFrame()->removeView(knobPattern);
    getFrame()->removeView(knobRearVerb);
    getFrame()->removeView(knobHiVerb);
    //Section background
    getFrame()->removeView(control_view);
}


//------------------------------------------------------------------------------------
void MyEditor::clearTwoOne()
{
    //Section Title
    getFrame()->removeView(decoderLabel1);
    //Knob Titles
    getFrame()->removeView(labelMode);
    getFrame()->removeView(labelWidth);
    getFrame()->removeView(labelPattern);
    getFrame()->removeView(labelRearVerb);
    getFrame()->removeView(labelHiVerb);
    getFrame()->removeView(labelSubGain);
    getFrame()->removeView(labelFc);
    //Knob Parameter Values
    getFrame()->removeView(paramMode);
    getFrame()->removeView(paramWidth);
    getFrame()->removeView(paramPattern);
    getFrame()->removeView(paramRearVerb);
    getFrame()->removeView(paramHiVerb);
    getFrame()->removeView(paramSubGain);
    getFrame()->removeView(paramFc);
    
    //Knobs
    getFrame()->removeView(knobWidth);
    getFrame()->removeView(knobPattern);
    getFrame()->removeView(knobMode);
    getFrame()->removeView(knobRearVerb);
    getFrame()->removeView(knobHiVerb);
    getFrame()->removeView(knobSubGain);
    getFrame()->removeView(knobFc);
    //Section background
    getFrame()->removeView(control_view);
    getFrame()->removeView(control_view2);
}


//------------------------------------------------------------------------------------
void MyEditor::clearFive()
{
    //Section Title
    getFrame()->removeView(decoderLabel1);
    //Knob Titles
    getFrame()->removeView(labelMode);
    getFrame()->removeView(labelWidth);
    getFrame()->removeView(labelPattern);
    getFrame()->removeView(labelSurMode);
    getFrame()->removeView(labelSurWidth);
    getFrame()->removeView(labelSurPattern);
    getFrame()->removeView(labelSurGain);
    getFrame()->removeView(labelCtrPattern);
    getFrame()->removeView(labelCtreGain);
    //Knob Parameter Values
    getFrame()->removeView(paramMode);
    getFrame()->removeView(paramWidth);
    getFrame()->removeView(paramPattern);
    getFrame()->removeView(paramSurMode);
    getFrame()->removeView(paramSurWidth);
    getFrame()->removeView(paramSurPattern);
    getFrame()->removeView(paramSurGain);
    getFrame()->removeView(paramCtrPattern);
    getFrame()->removeView(paramCtrGain);
    //Knobs
    getFrame()->removeView(knobWidth);
    getFrame()->removeView(knobPattern);
    getFrame()->removeView(knobMode);
    getFrame()->removeView(knobSurroundMode);
    getFrame()->removeView(knobSurroundWidth);
    getFrame()->removeView(knobSurroundPattern);
    getFrame()->removeView(knobSurroundGain);
    getFrame()->removeView(knobCentrePattern);
    getFrame()->removeView(knobCentreGain);
    //Section background
    getFrame()->removeView(control_view);
    getFrame()->removeView(control_view2);
}



//------------------------------------------------------------------------------------
void MyEditor::clearFour()
{
    //Section Title
    getFrame()->removeView(decoderLabel1);
    //Knob Titles
    getFrame()->removeView(labelMode);
    getFrame()->removeView(labelWidth);
    getFrame()->removeView(labelPattern);
    getFrame()->removeView(labelSurMode);
    getFrame()->removeView(labelSurWidth);
    getFrame()->removeView(labelSurPattern);
    getFrame()->removeView(labelSurGain);
    //Knob Parameter Values
    getFrame()->removeView(paramMode);
    getFrame()->removeView(paramWidth);
    getFrame()->removeView(paramPattern);
    getFrame()->removeView(paramSurMode);
    getFrame()->removeView(paramSurWidth);
    getFrame()->removeView(paramSurPattern);
    getFrame()->removeView(paramSurGain);
    //Knobs
    getFrame()->removeView(knobWidth);
    getFrame()->removeView(knobPattern);
    getFrame()->removeView(knobMode);
    getFrame()->removeView(knobSurroundMode);
    getFrame()->removeView(knobSurroundWidth);
    getFrame()->removeView(knobSurroundPattern);
    getFrame()->removeView(knobSurroundGain);
    //Section background
    getFrame()->removeView(control_view);
}



//------------------------------------------------------------------------------------
void MyEditor::clearFiveOne()
{
    //Section Title
    getFrame()->removeView(decoderLabel1);
    //Knob Titles
    getFrame()->removeView(labelMode);
    getFrame()->removeView(labelWidth);
    getFrame()->removeView(labelPattern);
    getFrame()->removeView(labelSurMode);
    getFrame()->removeView(labelSurWidth);
    getFrame()->removeView(labelSurPattern);
    getFrame()->removeView(labelSurGain);
    getFrame()->removeView(labelCtrPattern);
    getFrame()->removeView(labelCtreGain);
    getFrame()->removeView(labelSubGain);
    getFrame()->removeView(labelFc);
    //Knob Parameter Values
    getFrame()->removeView(paramMode);
    getFrame()->removeView(paramWidth);
    getFrame()->removeView(paramPattern);
    getFrame()->removeView(paramSurMode);
    getFrame()->removeView(paramSurWidth);
    getFrame()->removeView(paramSurPattern);
    getFrame()->removeView(paramSurGain);
    getFrame()->removeView(paramCtrPattern);
    getFrame()->removeView(paramCtrGain);
    getFrame()->removeView(paramSubGain);
    getFrame()->removeView(paramFc);
    //Knobs
    getFrame()->removeView(knobWidth);
    getFrame()->removeView(knobPattern);
    getFrame()->removeView(knobMode);
    getFrame()->removeView(knobSurroundMode);
    getFrame()->removeView(knobSurroundWidth);
    getFrame()->removeView(knobSurroundPattern);
    getFrame()->removeView(knobSurroundGain);
    getFrame()->removeView(knobCentrePattern);
    getFrame()->removeView(knobCentreGain);
    getFrame()->removeView(knobSubGain);
    getFrame()->removeView(knobFc);
    //Section background
    getFrame()->removeView(control_view);
    getFrame()->removeView(control_view2);
}


//------------------------------------------------------------------------------------
void MyEditor::clearHeller()
{
    //Section background
    getFrame()->removeView(heller1);
    getFrame()->removeView(heller2);
};


//------------------------------------------------------------------------------------
void MyEditor::modeChange()
{
    //First remove the previous mode's view
    switch (myPlot->decoder_prev) {
        case 2:
            clearStereo();
            break;
        case 3:
            clearTwoOne();
            break;
        case 4:
            clearFour();
            break;
        case 5:
            if (myPlot->decoder_mode5x != 0) {
                clearHeller();//Remove Heller Blank
            }
            clearFive();
            break;
        case 6:
            if (myPlot->decoder_mode5x != 0) {
                clearHeller();//Remove Heller Blank
            }
            clearFiveOne();
            break;
            
        default:
            break;
    }
    
    
    //Second add the new mode's view
    switch (myPlot->decoder_mode) {
        case 2:
            stereoDisplay();
            //Sync Parameters
            for (int i = 5; i <= 9; i++)
                setParameter (i, effect->getParameter (i));
            break;
        case 3:
            twooneDisplay();
            //Sync Parameters
            for (int i = 5; i <= 9; i++)
                setParameter (i, effect->getParameter (i));
            for (int i = 12; i <= 13; i++)
                setParameter (i, effect->getParameter (i));
            break;
        case 4:
            fourDisplay();
            //Sync Parameters
            for (int i = 5; i <= 7; i++)
                setParameter (i, effect->getParameter (i));
            for (int i = 14; i <= 17; i++)
                setParameter (i, effect->getParameter (i));
            break;
        case 5:
            fiveDisplay();
            //Sync Parameters
            for (int i = 5; i <= 7; i++)
                setParameter (i, effect->getParameter (i));
            for (int i = 10; i <= 11; i++)
                setParameter (i, effect->getParameter (i));
            for (int i = 14; i <= 17; i++)
                setParameter (i, effect->getParameter (i));
            if (myPlot->decoder_mode5x != 0) {
                hellerDisplay();//Blank Out Controls
            }
            break;
        case 6:
        {
            fiveoneDisplay();
            //Sync Parameters
            for (int i = 5; i <= 7; i++)
                setParameter (i, effect->getParameter (i));
            for (int i = 10; i <= 17; i++)
                setParameter (i, effect->getParameter (i));
            if (myPlot->decoder_mode5x != 0) {
                hellerDisplay();//Blank Out Controls
            }
        }
            break;
            
        default:
            break;
    }
 
    myPlot->decoder_prev = myPlot->decoder_mode;
}



//------------------------------------------------------------------------------------
void MyEditor::suspendDisplay()
{
    suspend = new CTextLabel(frameSize, 0, 0, kCenterText);
	suspend->setBackColor(CColor(23,25,26,200));//150
    suspend->setFont (kNormalFontVeryBig);
    suspend->setFontColor (CColor (255,255,255,255));
    suspend->setText("Currently Suspended");
    getFrame()->addView (suspend);
    getFrame()->remember();
    
}

//------------------------------------------------------------------------------------
void MyEditor::resumeDisplay()
{
    getFrame()->removeView(suspend);
}



//------------------------------------------------------------------------------------
void MyEditor::valueChanged (CControl* pControl)
{
	//-- valueChanged is called whenever the user changes one of the controls in the User Interface (UI)
	effect->setParameterAutomated (pControl->getTag (), pControl->getValue ());
    
    //Change the display directly by the knob. Not accurate due to the internal parameter not being used, so the value shown and internally used might not match.
    setParameter (pControl->getTag (), pControl->getValue ());
}

//------------------------------------------------------------------------------------
void MyEditor::setParameter (VstInt32 index, float value)
{
	//-- setParameter is called when the host automates one of the effects parameter.
	//-- The UI should reflect this state so we set the value of the control to the new value.
	//-- VSTGUI will automaticly redraw changed controls in the next idle (as this call happens to be in the process thread).
	if (frame && index < kNumParameters)
	{
        bool exists = true; //Checks if control exists, needed for outside automation

        switch (index) {
            case kRotate:
                    //exists = getFrame()->isChild(knobRotate);
                break;
            case kTilt:
                    //exists = getFrame()->isChild(knobTilt);
                break;
            case kTumble:
                    //exists = getFrame()->isChild(knobTumble);
                break;
            case kZoom:
                    //exists = getFrame()->isChild(knobZoom);
                break;
            case kZoomMethod:
                    //exists = getFrame()->isChild(knobZoomMethod);
                break;
            case kMode:
                if (value<=0.5f) {
                    myPlot->stereo_mode = 0;
                }
                else {
                    myPlot->stereo_mode = 1;
                }
                myPlot->setDirty();
                    exists = getFrame()->isChild(knobMode);
                break;
            case kWidth:
                myPlot->width = (double)value*90;
                myPlot->setDirty();
                    exists = getFrame()->isChild(knobWidth);
                break;  
            case kPattern:
                myPlot->pattern = (double)value;
                myPlot->setDirty();
                    exists = getFrame()->isChild(knobPattern);
                break;
            case kRearVerb:
                    exists = getFrame()->isChild(knobHiVerb);
                break;
            case kHiVerb:
                    exists = getFrame()->isChild(knobRearVerb);
                break;
            case kCentrePattern:
                myPlot->centre_pattern = (double)value;
                myPlot->setDirty();
                    exists = getFrame()->isChild(knobCentrePattern);
                break;
            case kCentreGain:
                myPlot->centre_gain = (double)((value*24)-18);
                myPlot->setDirty();
                    exists = getFrame()->isChild(knobSurroundWidth);
                break;
            case kSubGain:
                    exists = getFrame()->isChild(knobSubGain);
                break;
            case kFc:
                    exists = getFrame()->isChild(knobFc);
                break;
            case kSurroundMode:
                if (value<=0.5f) {
                    myPlot->surround_mode = 0;
                }
                else {
                    myPlot->surround_mode = 1;
                }
                myPlot->setDirty();
                    exists = getFrame()->isChild(knobSurroundMode);
                break;
            case kSurroundPattern:
                myPlot->surround_pattern = (double)value;
                myPlot->setDirty();
                    exists = getFrame()->isChild(knobSurroundPattern);
                break;
            case kSurroundWidth:
                myPlot->surround_width = (double)value*90;
                myPlot->setDirty();
                    exists = getFrame()->isChild(knobSurroundWidth);
                break;
            case kSurroundGain:
                myPlot->surround_gain = (double)((value*24)-18);
                myPlot->setDirty();
                    exists = getFrame()->isChild(knobSurroundGain);
                break;
            case kDecoderMode:
                if (value<=0.2f) {
                    myPlot->decoder_mode = 2; //Stereo
                }
                else if (value>0.2f && value<=0.4f) {
                    myPlot->decoder_mode = 3; //2.1
                }
                else if (value>0.4f && value<=0.6f) {
                    myPlot->decoder_mode = 4; //LCRS
                }
                else if (value>0.6f && value<=0.8f) {
                    myPlot->decoder_mode = 5; //5.0
                }
                else if (value>0.8f && value<=1.0f) {
                    myPlot->decoder_mode = 6; //5.1
                }
                myPlot->setDirty();
                modeChange();
                    //exists = getFrame()->isChild(knobDecoder);
                break;
            case kChannelOrder:
                    //exists = getFrame()->isChild(knobChannel);
            
            default:
                break;
        }        
        if (exists) {
            //ONLY set the objects that are on the screen
            //First write the value into the GUI value container
            controls[index]->setValue (value);
            
            //Call getParameterDisplay to get the char to display
            getParameterDisplay (index, &displayText);
        }
	}
    else if (frame && index == 100) {
        suspendDisplay();
        
    }
    else if (frame && index == 101) {
        resumeDisplay();
    }
    else if (frame && index == 103){
        myPlot->decoder_mode5x = (int)(value*2);
        myPlot->setDirty(); //ReDraw plot in next idle
        modeChange();
    }
}


//------------------------------------------------------------------------
void MyEditor::getParameterDisplay (VstInt32 index, char *text)   //GET display value shown for Parameters
{
	effect->getParameterDisplay(index, text);
	switch (index)
	{
		case kRotate :
			paramRotate->setText(text);
			break;
		case kTilt:
			paramTilt->setText(text);
			break;
		case kTumble:
			paramTumble->setText(text);
			break;
		case kZoom:
			paramZoom->setText(text);
			break;
		case kZoomMethod:
			paramZoomMethod->setText(text);
			break;
      case kMode :
            paramMode->setText(text);
            break;
		case kWidth:
			paramWidth->setText(text);
			break;
		case kPattern:
			paramPattern->setText(text);
			break;
		case kRearVerb :
			paramRearVerb->setText(text);
			break;
		case kHiVerb :
			paramHiVerb->setText(text);
			break;
        case kCentrePattern:
            paramCtrPattern->setText(text);
            break;
        case kCentreGain:
            paramCtrGain->setText(text);
            break;
        case kSubGain:
            paramSubGain->setText(text);
            break;
        case kFc:
            paramFc->setText(text);
            break;
        case kSurroundMode:
            paramSurMode->setText(text);
            break;
        case kSurroundPattern:
            paramSurPattern->setText(text);
            break;
        case kSurroundWidth:
            paramSurWidth->setText(text);
            break;
        case kSurroundGain:
            paramSurGain->setText(text);
            break;
        case kDecoderMode:
            paramDecoder->setText(text);
            break;
        case kChannelOrder:
            paramChannel->setText(text);
            break;
            
        default:
            break;
	}	
}