view Source/GUI.cpp @ 12:87dc3d84c120

Addressed the load program defaults over user settings 'feature'. Removed isChild on objects that are added before the frame creation since a)they're always there and b) doesn't write to all displays present.
author martinm_home <martin.morrell@eecs.qmul.ac.uk>
date Thu, 27 Sep 2012 23:29:16 +0100
parents 76e2e62635b4
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;
	}	
}