Mercurial > hg > ambi-plugin
changeset 10:b5d48e9b9aea
GUI Works fine.
Small memory leaks.
author | martinm_home <martin.morrell@eecs.qmul.ac.uk> |
---|---|
date | Tue, 25 Sep 2012 21:35:17 +0100 |
parents | 53f99cbc5dbd |
children | 76e2e62635b4 |
files | Classic Ambisonics Decoder VST.xcodeproj/project.xcworkspace/xcuserdata/momont.xcuserdatad/UserInterfaceState.xcuserstate Classic Ambisonics Decoder VST.xcodeproj/xcuserdata/momont.xcuserdatad/xcschemes/Classic Ambisonics Decoder VST.xcscheme Resources/360_knob.knob Resources/360_knob.png Resources/blue_knob.knob Resources/blue_knob.png Resources/blue_red_knob.knob Resources/blue_red_knob.png Resources/red_blue_knob.knob Resources/red_blue_knob.png Resources/red_knob.knob Resources/red_knob.png Source/Decoder.cpp Source/GUI.cpp Source/GUI.h Source/MyPlot.h Source/SoundField.cpp Source/SoundField.h |
diffstat | 18 files changed, 759 insertions(+), 313 deletions(-) [+] |
line wrap: on
line diff
Binary file Classic Ambisonics Decoder VST.xcodeproj/project.xcworkspace/xcuserdata/momont.xcuserdatad/UserInterfaceState.xcuserstate has changed
--- a/Classic Ambisonics Decoder VST.xcodeproj/xcuserdata/momont.xcuserdatad/xcschemes/Classic Ambisonics Decoder VST.xcscheme Thu Sep 20 16:41:01 2012 +0100 +++ b/Classic Ambisonics Decoder VST.xcodeproj/xcuserdata/momont.xcuserdatad/xcschemes/Classic Ambisonics Decoder VST.xcscheme Tue Sep 25 21:35:17 2012 +0100 @@ -35,7 +35,7 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" launchStyle = "0" useCustomWorkingDirectory = "NO" - buildConfiguration = "Debug" + buildConfiguration = "Release" ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" allowLocationSimulation = "YES">
--- a/Source/Decoder.cpp Thu Sep 20 16:41:01 2012 +0100 +++ b/Source/Decoder.cpp Tue Sep 25 21:35:17 2012 +0100 @@ -12,10 +12,10 @@ #define _USE_MATH_DEFINES #include <cmath> #include <stdlib.h> -#define RearVerbWidth 55 -#define RearVerbPattern 0.5 -#define HiVerbWidth 30 -#define HiVerbPattern 0.5 +#define RearVerbWidth 55 //Rear Verb Microphone Width +#define RearVerbPattern 0.5 //Rear Verb Microphone Pattern +#define HiVerbWidth 30 //Hi Verb Microphone Width +#define HiVerbPattern 0.5 //Hi Verb Microphone Pattern double Decoder::degRad(double angle) @@ -72,7 +72,7 @@ output[0]=outputC; return 1; } - else if (channelOrder==1) + else if (channelOrder==1) { output[0]=0; output[1]=0; output[2]=outputC; @@ -80,6 +80,10 @@ output[4]=0; output[5]=0; return 6; + } + else { + return 0; + } break; case 2: @@ -89,7 +93,7 @@ output[1]=outputR; return 2; } - else if (channelOrder==1) + else if (channelOrder==1) { output[0]=outputL; output[1]=outputR; output[2]=0; @@ -98,6 +102,10 @@ output[5]=0; return 6; break; + } + else { + return 0; + } case 3: twoOneDecoder(w, x, y, z); @@ -107,7 +115,7 @@ output[2]=outputS; return 3; } - else if (channelOrder==1) + else if (channelOrder==1) { output[0]=outputL; output[1]=outputR; output[2]=0; @@ -116,6 +124,10 @@ output[5]=0; return 6; break; + } + else { + return 0; + } case 4: quadDecoder(w, x, y, z); @@ -126,7 +138,7 @@ output[3]=outputSR; return 4; } - else if (channelOrder==1) + else if (channelOrder==1) { output[0]=outputL; output[1]=outputR; output[2]=0; @@ -135,6 +147,10 @@ output[5]=outputSR; return 6; break; + } + else { + return 0; + } case 5: fiveDecoder(w, x, y, z); @@ -146,7 +162,7 @@ output[4]=outputSR; return 5; } - else if (channelOrder==1) + else if (channelOrder==1) { output[0]=outputL; output[1]=outputR; output[2]=outputC; @@ -155,6 +171,10 @@ output[5]=outputSR; return 6; break; + } + else { + return 0; + } case 6: fiveOneDecoder(w, x, y, z); @@ -167,7 +187,7 @@ output[5]=outputSR; return 6; } - else if (channelOrder==1) + else if (channelOrder==1) { output[0]=outputL; output[1]=outputR; output[2]=outputC; @@ -176,6 +196,10 @@ output[5]=outputSR; return 6; break; + } + else { + return 0; + } default: return 0;
--- a/Source/GUI.cpp Thu Sep 20 16:41:01 2012 +0100 +++ b/Source/GUI.cpp Tue Sep 25 21:35:17 2012 +0100 @@ -71,7 +71,6 @@ 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); @@ -102,17 +101,6 @@ //Info Display nameDisplay(newFrame); - - - - //-- remember our controls so that we can sync them with the state of the effect - controls[kRotate] = knobRotate; - controls[kTilt] = knobTilt; - controls[kTumble] = knobTumble; - controls[kZoom] = knobZoom; - controls[kZoomMethod] = knobZoomMethod; - controls[kDecoderMode] = knobDecoder; - controls[kChannelOrder] = knobChannel; @@ -120,14 +108,12 @@ frame = newFrame; - //-- sync parameters - //syncParameters(); + 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)); - myPlot->decoder_mode5x = effect->getParameter(103); //Sync the hidden 5.x decoder mode return true; @@ -138,20 +124,28 @@ //------------------------------------------------------------------------------------ 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(); + + //myPlot->decoder_mode=-1; + //modeChange(); + + + + //-- 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. - - -} - - - -//------------------------------------------------------------------------------------ -void MyEditor::syncParameters() -{ - for (int i = 0; i < kNumParameters; i++) - setParameter (i, effect->getParameter (i)); + CFrame* oldFrame = frame; + frame = 0; + oldFrame->forget(); } @@ -172,32 +166,30 @@ 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));//IMAGE, 64, + knobRotate = new CAnimKnob (r, this, kRotate, IMAGE, knob_360->getHeight () / IMAGE, knob_360, CPoint (0, 0)); newFrame->addView (knobRotate); - //knobRotate->forget (); + 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); - //knobTilt->forget (); + 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); - //knobTumble->forget (); + newFrame->remember(); - - - - + //--CTextLabel-------------------------------------- //Label Rotate @@ -210,6 +202,7 @@ labelRotate->setFrameColor (kBlank); labelRotate->setText("Rotate"); newFrame->addView (labelRotate); + newFrame->remember(); //Label Tilt LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -220,6 +213,7 @@ labelTilt->setFrameColor (kBlank); labelTilt->setText("Tilt"); newFrame->addView (labelTilt); + newFrame->remember(); //Label Tumble LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -230,6 +224,7 @@ labelTumble->setFrameColor (kBlank); labelTumble->setText("Tumble"); newFrame->addView (labelTumble); + newFrame->remember(); //Label Section @@ -242,6 +237,7 @@ labelTransforms->setFrameColor (kBlank); labelTransforms->setText("Transforms"); newFrame->addView (labelTransforms); + newFrame->remember(); @@ -256,7 +252,8 @@ paramRotate->setFontColor (kDisplayText); paramRotate->setBackColor (kDisplayBackground); paramRotate->setFrameColor (kBlackCColor); - newFrame->addView (paramRotate); + newFrame->addView (paramRotate); + newFrame->remember(); //Tilt Value @@ -267,7 +264,8 @@ paramTilt->setFontColor (kDisplayText); paramTilt->setBackColor (kDisplayBackground); paramTilt->setFrameColor (kBlackCColor); - newFrame->addView (paramTilt); + newFrame->addView (paramTilt); + newFrame->remember(); //Tumble Value @@ -278,7 +276,27 @@ paramTumble->setFontColor (kDisplayText); paramTumble->setBackColor (kDisplayBackground); paramTumble->setFrameColor (kBlackCColor); - newFrame->addView (paramTumble); + 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(); } @@ -296,19 +314,20 @@ 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); - //knobZoomMethod->forget (); + 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); - //knobZoom->forget (); + newFrame->remember(); //--CTextLabel-------------------------------------- @@ -322,6 +341,7 @@ labelZoomMethod->setFrameColor (kBlank); labelZoomMethod->setText("Zoom Type"); newFrame->addView (labelZoomMethod); + newFrame->remember(); //Label Zoom LabelSize.offset (knob_mode4->getWidth()+cSep, 0); @@ -332,17 +352,19 @@ 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* labelTransforms = new CTextLabel (LabelSize, 0, 0, kCenterText); - labelTransforms->setFont (kNormalFontBig); - labelTransforms->setFontColor (kLabelText); - labelTransforms->setBackColor (kBlank); - labelTransforms->setFrameColor (kBlank); - labelTransforms->setText("Zooming"); - newFrame->addView (labelTransforms); + 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-------------------------------------- @@ -355,7 +377,8 @@ paramZoomMethod->setFontColor (kDisplayText); paramZoomMethod->setBackColor (kDisplayBackground); paramZoomMethod->setFrameColor (kBlackCColor); - newFrame->addView (paramZoomMethod); + newFrame->addView (paramZoomMethod); + newFrame->remember(); //Zoom Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -365,8 +388,23 @@ paramZoom->setFontColor (kDisplayText); paramZoom->setBackColor (kDisplayBackground); paramZoom->setFrameColor (kBlackCColor); - newFrame->addView (paramZoom); + 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(); } @@ -386,7 +424,7 @@ control_view = new CView (controlSize); control_view->setBackground (bControls); getFrame()->addView (control_view); - + getFrame()->remember(); @@ -395,27 +433,31 @@ 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(); @@ -431,7 +473,8 @@ labelMode->setBackColor (kBlank); labelMode->setFrameColor (kBlank); labelMode->setText("Mode"); - getFrame()->addView (labelMode); + getFrame()->addView (labelMode); + getFrame()->remember(); //Label Width LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -442,6 +485,7 @@ labelWidth->setFrameColor (kBlank); labelWidth->setText("Width"); getFrame()->addView (labelWidth); + getFrame()->remember(); //Label Pattern LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -452,6 +496,7 @@ labelPattern->setFrameColor (kBlank); labelPattern->setText("Pattern"); getFrame()->addView (labelPattern); + getFrame()->remember(); //Label RearVerb LabelSize.offset (2*knob_mode2->getWidth()+2*cSep+10, 0); @@ -462,6 +507,7 @@ labelRearVerb->setFrameColor (kBlank); labelRearVerb->setText("RearVerb"); getFrame()->addView (labelRearVerb); + getFrame()->remember(); //Label HiVerb LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -472,7 +518,7 @@ labelHiVerb->setFrameColor (kBlank); labelHiVerb->setText("HiVerb"); getFrame()->addView (labelHiVerb); - + getFrame()->remember(); @@ -488,7 +534,7 @@ decoderLabel1->setFrameColor (kBlank); decoderLabel1->setText("Stereo Decoding & Reverb"); getFrame()->addView (decoderLabel1); - + getFrame()->remember(); @@ -503,6 +549,7 @@ paramMode->setBackColor (kDisplayBackground); paramMode->setFrameColor (kBlackCColor); getFrame()->addView (paramMode); + getFrame()->remember(); //Width Value @@ -514,7 +561,7 @@ paramWidth->setBackColor (kDisplayBackground); paramWidth->setFrameColor (kBlackCColor); getFrame()->addView (paramWidth); - + getFrame()->remember(); //Pattern Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -525,7 +572,7 @@ paramPattern->setBackColor (kDisplayBackground); paramPattern->setFrameColor (kBlackCColor); getFrame()->addView (paramPattern); - + getFrame()->remember(); //RearVerb Value DisplaySize.offset (2*knob_mode2->getWidth()+2*cSep+10, 0); @@ -536,7 +583,7 @@ paramRearVerb->setBackColor (kDisplayBackground); paramRearVerb->setFrameColor (kBlackCColor); getFrame()->addView (paramRearVerb); - + getFrame()->remember(); //HiVerb Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -547,6 +594,7 @@ paramHiVerb->setBackColor (kDisplayBackground); paramHiVerb->setFrameColor (kBlackCColor); getFrame()->addView (paramHiVerb); + getFrame()->remember(); controls[kMode] = knobMode; controls[kWidth] = knobWidth; @@ -561,6 +609,10 @@ //controls[kSurroundPattern] = knobSurroundPattern; //controls[kSurroundWidth] = knobSurroundWidth; //controls[kSurroundGain] = knobSurroundGain; + + + //Forget Label, Knobs etc. + bControls->forget(); } @@ -581,7 +633,8 @@ 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 ()); @@ -589,7 +642,7 @@ control_view2 = new CView (controlSize); control_view2->setBackground (bControls2); getFrame()->addView (control_view2); - + getFrame()->remember(); //Mode @@ -597,38 +650,44 @@ 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(); @@ -645,6 +704,7 @@ labelMode->setFrameColor (kBlank); labelMode->setText("Mode"); getFrame()->addView (labelMode); + getFrame()->remember(); //Label Width LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -655,6 +715,7 @@ labelWidth->setFrameColor (kBlank); labelWidth->setText("Width"); getFrame()->addView (labelWidth); + getFrame()->remember(); //Label Pattern LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -665,6 +726,7 @@ labelPattern->setFrameColor (kBlank); labelPattern->setText("Pattern"); getFrame()->addView (labelPattern); + getFrame()->remember(); //Label RearVerb LabelSize.offset (2*knob_mode2->getWidth()+2*cSep+10, 0); @@ -675,6 +737,7 @@ labelRearVerb->setFrameColor (kBlank); labelRearVerb->setText("RearVerb"); getFrame()->addView (labelRearVerb); + getFrame()->remember(); //Label HiVerb LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -685,6 +748,7 @@ labelHiVerb->setFrameColor (kBlank); labelHiVerb->setText("HiVerb"); getFrame()->addView (labelHiVerb); + getFrame()->remember(); //Label SubGain LabelSize(0, 0, knob_mode2->getWidth (), tDepth); @@ -696,6 +760,7 @@ labelSubGain->setFrameColor (kBlank); labelSubGain->setText("SubGain"); getFrame()->addView (labelSubGain); + getFrame()->remember(); //Label Fc LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -706,7 +771,7 @@ labelFc->setFrameColor (kBlank); labelFc->setText("xOver"); getFrame()->addView (labelFc); - + getFrame()->remember(); @@ -722,7 +787,7 @@ decoderLabel1->setFrameColor (kBlank); decoderLabel1->setText("2.1 Decoding & Reverb"); getFrame()->addView (decoderLabel1); - + getFrame()->remember(); @@ -737,7 +802,7 @@ paramMode->setBackColor (kDisplayBackground); paramMode->setFrameColor (kBlackCColor); getFrame()->addView (paramMode); - + getFrame()->remember(); //Width Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -748,7 +813,7 @@ paramWidth->setBackColor (kDisplayBackground); paramWidth->setFrameColor (kBlackCColor); getFrame()->addView (paramWidth); - + getFrame()->remember(); //Pattern Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -759,7 +824,7 @@ paramPattern->setBackColor (kDisplayBackground); paramPattern->setFrameColor (kBlackCColor); getFrame()->addView (paramPattern); - + getFrame()->remember(); //RearVerb Value DisplaySize.offset (2*knob_mode2->getWidth()+2*cSep+10, 0); @@ -770,7 +835,7 @@ paramRearVerb->setBackColor (kDisplayBackground); paramRearVerb->setFrameColor (kBlackCColor); getFrame()->addView (paramRearVerb); - + getFrame()->remember(); //HiVerb Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -781,7 +846,7 @@ paramHiVerb->setBackColor (kDisplayBackground); paramHiVerb->setFrameColor (kBlackCColor); getFrame()->addView (paramHiVerb); - + getFrame()->remember(); //SubGain Value DisplaySize(0, 0, knob_mode2->getWidth (), tDepth); @@ -793,7 +858,7 @@ paramSubGain->setBackColor (kDisplayBackground); paramSubGain->setFrameColor (kBlackCColor); getFrame()->addView (paramSubGain); - + getFrame()->remember(); //Fc Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -804,6 +869,7 @@ paramFc->setBackColor (kDisplayBackground); paramFc->setFrameColor (kBlackCColor); getFrame()->addView (paramFc); + getFrame()->remember(); controls[kMode] = knobMode; controls[kWidth] = knobWidth; @@ -818,6 +884,10 @@ //controls[kSurroundPattern] = knobSurroundPattern; //controls[kSurroundWidth] = knobSurroundWidth; //controls[kSurroundGain] = knobSurroundGain; + + //Forget Label, Knobs etc. + bControls->forget(); + bControls2->forget(); } @@ -836,7 +906,7 @@ control_view = new CView (controlSize); control_view->setBackground (bControls); getFrame()->addView (control_view); - + getFrame()->remember(); @@ -845,38 +915,44 @@ 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(); @@ -893,6 +969,7 @@ labelMode->setFrameColor (kBlank); labelMode->setText("Mode"); getFrame()->addView (labelMode); + getFrame()->remember(); //Label Width LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -903,6 +980,7 @@ labelWidth->setFrameColor (kBlank); labelWidth->setText("Width"); getFrame()->addView (labelWidth); + getFrame()->remember(); //Label Pattern LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -913,6 +991,7 @@ labelPattern->setFrameColor (kBlank); labelPattern->setText("Pattern"); getFrame()->addView (labelPattern); + getFrame()->remember(); //Label Surround Mode LabelSize.offset (knob_mode2->getWidth()+cSep+10, 0); @@ -923,6 +1002,7 @@ labelSurMode->setFrameColor (kBlank); labelSurMode->setText("SurMode"); getFrame()->addView (labelSurMode); + getFrame()->remember(); //Label Surround Width LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -933,6 +1013,7 @@ labelSurWidth->setFrameColor (kBlank); labelSurWidth->setText("SurWidth"); getFrame()->addView (labelSurWidth); + getFrame()->remember(); //Label Surround Pattern LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -943,6 +1024,7 @@ labelSurPattern->setFrameColor (kBlank); labelSurPattern->setText("SurPattern"); getFrame()->addView (labelSurPattern); + getFrame()->remember(); //Label Surround Gain LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -953,7 +1035,7 @@ labelSurGain->setFrameColor (kBlank); labelSurGain->setText("SurGain"); getFrame()->addView (labelSurGain); - + getFrame()->remember(); @@ -968,7 +1050,7 @@ decoderLabel1->setFrameColor (kBlank); decoderLabel1->setText("4.0 Decoding"); getFrame()->addView (decoderLabel1); - + getFrame()->remember(); @@ -983,7 +1065,7 @@ paramMode->setBackColor (kDisplayBackground); paramMode->setFrameColor (kBlackCColor); getFrame()->addView (paramMode); - + getFrame()->remember(); //Width Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -994,7 +1076,7 @@ paramWidth->setBackColor (kDisplayBackground); paramWidth->setFrameColor (kBlackCColor); getFrame()->addView (paramWidth); - + getFrame()->remember(); //Pattern Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1005,7 +1087,7 @@ paramPattern->setBackColor (kDisplayBackground); paramPattern->setFrameColor (kBlackCColor); getFrame()->addView (paramPattern); - + getFrame()->remember(); //SurMode Value DisplaySize.offset (knob_mode2->getWidth()+cSep+10, 0); @@ -1016,7 +1098,7 @@ paramSurMode->setBackColor (kDisplayBackground); paramSurMode->setFrameColor (kBlackCColor); getFrame()->addView (paramSurMode); - + getFrame()->remember(); //SurWidth Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1027,6 +1109,7 @@ paramSurWidth->setBackColor (kDisplayBackground); paramSurWidth->setFrameColor (kBlackCColor); getFrame()->addView (paramSurWidth); + getFrame()->remember(); //SurPattern Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1037,6 +1120,7 @@ paramSurPattern->setBackColor (kDisplayBackground); paramSurPattern->setFrameColor (kBlackCColor); getFrame()->addView (paramSurPattern); + getFrame()->remember(); //SurWidth Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1047,6 +1131,7 @@ paramSurGain->setBackColor (kDisplayBackground); paramSurGain->setFrameColor (kBlackCColor); getFrame()->addView (paramSurGain); + getFrame()->remember(); controls[kMode] = knobMode; controls[kWidth] = knobWidth; @@ -1061,6 +1146,9 @@ controls[kSurroundPattern] = knobSurroundPattern; controls[kSurroundWidth] = knobSurroundWidth; controls[kSurroundGain] = knobSurroundGain; + + //Forget Label, Knobs etc. + bControls->forget(); } @@ -1083,7 +1171,7 @@ 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 ()); @@ -1091,7 +1179,7 @@ control_view2 = new CView (controlSize); control_view2->setBackground (bControls2); getFrame()->addView (control_view2); - + getFrame()->remember(); //Mode @@ -1099,38 +1187,44 @@ 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(); @@ -1140,12 +1234,13 @@ 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(); @@ -1163,6 +1258,7 @@ labelMode->setFrameColor (kBlank); labelMode->setText("Mode"); getFrame()->addView (labelMode); + getFrame()->remember(); //Label Width LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1173,6 +1269,7 @@ labelWidth->setFrameColor (kBlank); labelWidth->setText("Width"); getFrame()->addView (labelWidth); + getFrame()->remember(); //Label Pattern LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1183,6 +1280,7 @@ labelPattern->setFrameColor (kBlank); labelPattern->setText("Pattern"); getFrame()->addView (labelPattern); + getFrame()->remember(); //Label Surround Mode LabelSize.offset (knob_mode2->getWidth()+cSep+10, 0); @@ -1193,6 +1291,7 @@ labelSurMode->setFrameColor (kBlank); labelSurMode->setText("SurMode"); getFrame()->addView (labelSurMode); + getFrame()->remember(); //Label Surround Width LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1203,6 +1302,7 @@ labelSurWidth->setFrameColor (kBlank); labelSurWidth->setText("SurWidth"); getFrame()->addView (labelSurWidth); + getFrame()->remember(); //Label Surround Pattern LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1213,6 +1313,7 @@ labelSurPattern->setFrameColor (kBlank); labelSurPattern->setText("SurPattern"); getFrame()->addView (labelSurPattern); + getFrame()->remember(); //Label Surround Gain LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1223,7 +1324,7 @@ labelSurGain->setFrameColor (kBlank); labelSurGain->setText("SurGain"); getFrame()->addView (labelSurGain); - + getFrame()->remember(); //Label Centre Pattern @@ -1236,6 +1337,7 @@ labelCtrPattern->setFrameColor (kBlank); labelCtrPattern->setText("CtrPattern"); getFrame()->addView (labelCtrPattern); + getFrame()->remember(); //Label Centre Gain LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1246,7 +1348,7 @@ labelCtreGain->setFrameColor (kBlank); labelCtreGain->setText("CtrGain"); getFrame()->addView (labelCtreGain); - + getFrame()->remember(); @@ -1262,7 +1364,7 @@ decoderLabel1->setFrameColor (kBlank); decoderLabel1->setText("5.0 Decoding"); getFrame()->addView (decoderLabel1); - + getFrame()->remember(); @@ -1277,7 +1379,7 @@ paramMode->setBackColor (kDisplayBackground); paramMode->setFrameColor (kBlackCColor); getFrame()->addView (paramMode); - + getFrame()->remember(); //Width Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1288,7 +1390,7 @@ paramWidth->setBackColor (kDisplayBackground); paramWidth->setFrameColor (kBlackCColor); getFrame()->addView (paramWidth); - + getFrame()->remember(); //Pattern Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1299,7 +1401,7 @@ paramPattern->setBackColor (kDisplayBackground); paramPattern->setFrameColor (kBlackCColor); getFrame()->addView (paramPattern); - + getFrame()->remember(); //SurMode Value DisplaySize.offset (knob_mode2->getWidth()+cSep+10, 0); @@ -1310,7 +1412,7 @@ paramSurMode->setBackColor (kDisplayBackground); paramSurMode->setFrameColor (kBlackCColor); getFrame()->addView (paramSurMode); - + getFrame()->remember(); //SurWidth Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1321,6 +1423,7 @@ paramSurWidth->setBackColor (kDisplayBackground); paramSurWidth->setFrameColor (kBlackCColor); getFrame()->addView (paramSurWidth); + getFrame()->remember(); //SurPattern Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1331,6 +1434,7 @@ paramSurPattern->setBackColor (kDisplayBackground); paramSurPattern->setFrameColor (kBlackCColor); getFrame()->addView (paramSurPattern); + getFrame()->remember(); //SurWidth Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1341,7 +1445,7 @@ paramSurGain->setBackColor (kDisplayBackground); paramSurGain->setFrameColor (kBlackCColor); getFrame()->addView (paramSurGain); - + getFrame()->remember(); //CtrPattern Value @@ -1354,7 +1458,7 @@ paramCtrPattern->setBackColor (kDisplayBackground); paramCtrPattern->setFrameColor (kBlackCColor); getFrame()->addView (paramCtrPattern); - + getFrame()->remember(); //CtrGain Value DisplaySize.offset(knob_red_blue->getWidth()+cSep, 0); @@ -1365,7 +1469,7 @@ paramCtrGain->setBackColor (kDisplayBackground); paramCtrGain->setFrameColor (kBlackCColor); getFrame()->addView (paramCtrGain); - + getFrame()->remember(); controls[kMode] = knobMode; controls[kWidth] = knobWidth; @@ -1380,6 +1484,10 @@ controls[kSurroundPattern] = knobSurroundPattern; controls[kSurroundWidth] = knobSurroundWidth; controls[kSurroundGain] = knobSurroundGain; + + //Forget Label, Knobs etc. + bControls->forget(); + bControls2->forget(); } @@ -1403,7 +1511,7 @@ 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 ()); @@ -1411,7 +1519,7 @@ control_view2 = new CView (controlSize); control_view2->setBackground (bControls2); getFrame()->addView (control_view2); - + getFrame()->remember(); //Mode @@ -1419,37 +1527,44 @@ 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(); @@ -1460,21 +1575,25 @@ 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(); @@ -1492,6 +1611,7 @@ labelMode->setFrameColor (kBlank); labelMode->setText("Mode"); getFrame()->addView (labelMode); + getFrame()->remember(); //Label Width LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1502,6 +1622,7 @@ labelWidth->setFrameColor (kBlank); labelWidth->setText("Width"); getFrame()->addView (labelWidth); + getFrame()->remember(); //Label Pattern LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1512,6 +1633,7 @@ labelPattern->setFrameColor (kBlank); labelPattern->setText("Pattern"); getFrame()->addView (labelPattern); + getFrame()->remember(); //Label Surround Mode LabelSize.offset (knob_mode2->getWidth()+cSep+10, 0); @@ -1522,6 +1644,7 @@ labelSurMode->setFrameColor (kBlank); labelSurMode->setText("SurMode"); getFrame()->addView (labelSurMode); + getFrame()->remember(); //Label Surround Width LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1532,6 +1655,7 @@ labelSurWidth->setFrameColor (kBlank); labelSurWidth->setText("SurWidth"); getFrame()->addView (labelSurWidth); + getFrame()->remember(); //Label Surround Pattern LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1542,6 +1666,7 @@ labelSurPattern->setFrameColor (kBlank); labelSurPattern->setText("SurPattern"); getFrame()->addView (labelSurPattern); + getFrame()->remember(); //Label Surround Gain LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1552,7 +1677,7 @@ labelSurGain->setFrameColor (kBlank); labelSurGain->setText("SurGain"); getFrame()->addView (labelSurGain); - + getFrame()->remember(); //Label Centre Pattern @@ -1565,6 +1690,7 @@ labelCtrPattern->setFrameColor (kBlank); labelCtrPattern->setText("CtrPattern"); getFrame()->addView (labelCtrPattern); + getFrame()->remember(); //Label Centre Gain LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1575,6 +1701,7 @@ labelCtreGain->setFrameColor (kBlank); labelCtreGain->setText("CtrGain"); getFrame()->addView (labelCtreGain); + getFrame()->remember(); //Label SubGain LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1585,7 +1712,8 @@ 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); @@ -1595,7 +1723,7 @@ labelFc->setFrameColor (kBlank); labelFc->setText("xOver"); getFrame()->addView (labelFc); - + getFrame()->remember(); @@ -1611,7 +1739,7 @@ decoderLabel1->setFrameColor (kBlank); decoderLabel1->setText("5.1 Decoding"); getFrame()->addView (decoderLabel1); - + getFrame()->remember(); @@ -1626,7 +1754,7 @@ paramMode->setBackColor (kDisplayBackground); paramMode->setFrameColor (kBlackCColor); getFrame()->addView (paramMode); - + getFrame()->remember(); //Width Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1637,7 +1765,7 @@ paramWidth->setBackColor (kDisplayBackground); paramWidth->setFrameColor (kBlackCColor); getFrame()->addView (paramWidth); - + getFrame()->remember(); //Pattern Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1648,7 +1776,7 @@ paramPattern->setBackColor (kDisplayBackground); paramPattern->setFrameColor (kBlackCColor); getFrame()->addView (paramPattern); - + getFrame()->remember(); //SurMode Value DisplaySize.offset (knob_mode2->getWidth()+cSep+10, 0); @@ -1659,7 +1787,7 @@ paramSurMode->setBackColor (kDisplayBackground); paramSurMode->setFrameColor (kBlackCColor); getFrame()->addView (paramSurMode); - + getFrame()->remember(); //SurWidth Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1670,6 +1798,7 @@ paramSurWidth->setBackColor (kDisplayBackground); paramSurWidth->setFrameColor (kBlackCColor); getFrame()->addView (paramSurWidth); + getFrame()->remember(); //SurPattern Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1680,6 +1809,7 @@ paramSurPattern->setBackColor (kDisplayBackground); paramSurPattern->setFrameColor (kBlackCColor); getFrame()->addView (paramSurPattern); + getFrame()->remember(); //SurWidth Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1690,7 +1820,7 @@ paramSurGain->setBackColor (kDisplayBackground); paramSurGain->setFrameColor (kBlackCColor); getFrame()->addView (paramSurGain); - + getFrame()->remember(); //CtrPattern Value @@ -1703,7 +1833,7 @@ paramCtrPattern->setBackColor (kDisplayBackground); paramCtrPattern->setFrameColor (kBlackCColor); getFrame()->addView (paramCtrPattern); - + getFrame()->remember(); //CtrGain Value DisplaySize.offset(knob_red_blue->getWidth()+cSep, 0); @@ -1714,7 +1844,7 @@ paramCtrGain->setBackColor (kDisplayBackground); paramCtrGain->setFrameColor (kBlackCColor); getFrame()->addView (paramCtrGain); - + getFrame()->remember(); //SubGain Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1725,7 +1855,7 @@ paramSubGain->setBackColor (kDisplayBackground); paramSubGain->setFrameColor (kBlackCColor); getFrame()->addView (paramSubGain); - + getFrame()->remember(); //Fc Value DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); @@ -1736,6 +1866,8 @@ paramFc->setBackColor (kDisplayBackground); paramFc->setFrameColor (kBlackCColor); getFrame()->addView (paramFc); + getFrame()->remember(); + controls[kMode] = knobMode; controls[kWidth] = knobWidth; @@ -1750,6 +1882,10 @@ controls[kSurroundPattern] = knobSurroundPattern; controls[kSurroundWidth] = knobSurroundWidth; controls[kSurroundGain] = knobSurroundGain; + + //Forget Label, Knobs etc. + bControls->forget(); + bControls2->forget(); } @@ -1768,12 +1904,14 @@ 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(); }; @@ -1794,10 +1932,12 @@ 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); @@ -1812,20 +1952,23 @@ vendor_version->setBackColor (kBlank); vendor_version->setFrameColor (kBlank); newFrame->addView (vendor_version); - vendor_version->forget(); + 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->setFontColor (kLabelText); bitMode->setHoriAlign(kLeftText); bitMode->setBackColor (kBlank); bitMode->setFrameColor (kBlank); + + //Forget labels and background + bName->forget (); + vendor_version->forget(); newFrame->addView (bitMode); - - bName->forget (); + newFrame->remember(); } @@ -1846,13 +1989,14 @@ 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(); } @@ -1870,23 +2014,21 @@ 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); - knobDecoder->forget (); - + 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); - knobChannel->forget (); - + newFrame->remember(); @@ -1900,6 +2042,7 @@ labelDecoder->setFrameColor (kBlank); labelDecoder->setText("Decoding"); newFrame->addView (labelDecoder); + newFrame->remember(); //Label Channel Order LabelSize.offset (knob_mode5->getWidth ()+cSep, 0); @@ -1910,7 +2053,7 @@ labelChannel->setFrameColor (kBlank); labelChannel->setText("Channels"); newFrame->addView (labelChannel); - + newFrame->remember(); @@ -1925,7 +2068,7 @@ paramDecoder->setBackColor (kDisplayBackground); paramDecoder->setFrameColor (kBlackCColor); newFrame->addView (paramDecoder); - + newFrame->remember(); //Channel Order Value DisplaySize.offset (knob_mode5->getWidth ()+cSep, 0); @@ -1936,7 +2079,7 @@ paramChannel->setBackColor (kDisplayBackground); paramChannel->setFrameColor (kBlackCColor); newFrame->addView (paramChannel); - + newFrame->remember(); //Label Section @@ -1948,91 +2091,28 @@ labelSettings->setBackColor (kBlank); labelSettings->setFrameColor (kBlank); labelSettings->setText("Settings"); - newFrame->addView (labelSettings); + 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::setupKnobs(int &setupHoz, int &setupEl, int &setupSep) -{ - - //DEFAULT STEREO POSITIONS - - //Mode - r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2); - r.offset(setupHoz, setupEl); - knobMode = new CHorizontalSwitch (r, this, kMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0)); - //newFrame->addView (knobMode); - //knobMode->forget (); - - //Width - r.offset(knob_mode2->getWidth()+setupSep, 0); - knobWidth = new CAnimKnob (r, this, kWidth, IMAGE, knob_red->getHeight () / IMAGE, knob_red, CPoint (0, 0)); - //newFrame->addView (knobWidth); - //knobWidth->forget (); - - //Pattern - r.offset(knob_red_blue->getWidth()+setupSep, 0); - knobPattern = new CAnimKnob (r, this, kPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0)); - //newFrame->addView (knobPattern); - //knobPattern->forget (); - - //RearVerb - r.offset(knob_mode2->getWidth()+setupSep*4, 0); - knobRearVerb = new CAnimKnob (r, this, kRearVerb, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_red, CPoint (0, 0)); - //newFrame->addView (knobRearVerb); - //knobRearVerb->forget (); - - //HiVerb - r.offset(knob_red_blue->getWidth()+setupSep, 0); - knobHiVerb = new CAnimKnob (r, this, kHiVerb, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0)); - //newFrame->addView (knobHiVerb); - //knobHiVerb->forget (); - - - - //DEFAULT SURROUND POSITIONS - - //CentrePattern - r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2); - r.offset(setupHoz+knob_mode2->getWidth ()*3+setupSep/2*3, setupEl); - knobCentrePattern = new CAnimKnob (r, this, kCentrePattern, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0)); - - //CentreGain - r.offset(knob_red_blue->getWidth()+setupSep/2, 0); - knobCentreGain = new CAnimKnob (r, this, kCentreGain, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0)); - - //SubGain - r.offset(knob_red_blue->getWidth()+setupSep/2, 0); - knobSubGain = new CAnimKnob (r, this, kSubGain, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0)); - - //Fc - r.offset(knob_red_blue->getWidth()+setupSep, 0); - knobFc = new CAnimKnob (r, this, kFc, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0)); - - //SurroundMode - knobSurroundMode = new CHorizontalSwitch (r, this, kSurroundMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0)); - - //SurroundPattern - r.offset(knob_red_blue->getWidth()+setupSep, 0); - knobSurroundPattern = new CAnimKnob (r, this, kSurroundPattern, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0)); - - //SurroundWidth - r.offset(knob_red_blue->getWidth()+setupSep, 0); - knobSurroundWidth = new CAnimKnob (r, this, kSurroundWidth, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0)); - - //SurroundGain - r.offset(knob_red_blue->getWidth()+setupSep, 0); - knobSurroundGain = new CAnimKnob (r, this, kSurroundGain, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0)); - - -} - - - - -//------------------------------------------------------------------------------------ void MyEditor::clearStereo() { //Section Title @@ -2050,9 +2130,9 @@ getFrame()->removeView(paramRearVerb); getFrame()->removeView(paramHiVerb); //Knobs + getFrame()->removeView(knobMode); getFrame()->removeView(knobWidth); getFrame()->removeView(knobPattern); - getFrame()->removeView(knobMode); getFrame()->removeView(knobRearVerb); getFrame()->removeView(knobHiVerb); //Section background @@ -2244,16 +2324,16 @@ clearFour(); break; case 5: + if (myPlot->decoder_mode5x != 0) { + clearHeller();//Remove Heller Blank + } clearFive(); - if (myPlot->decoder_mode5x != 0) { - clearHeller();//Blank Out Controls - } break; case 6: + if (myPlot->decoder_mode5x != 0) { + clearHeller();//Remove Heller Blank + } clearFiveOne(); - if (myPlot->decoder_mode5x != 0) { - clearHeller();//Blank Out Controls - } break; default: @@ -2315,7 +2395,8 @@ default: break; } - + + myPlot->decoder_prev = myPlot->decoder_mode; } @@ -2329,6 +2410,8 @@ suspend->setFontColor (CColor (255,255,255,255)); suspend->setText("Currently Suspended"); getFrame()->addView (suspend); + getFrame()->remember(); + } //------------------------------------------------------------------------------------ @@ -2480,7 +2563,6 @@ } break; case kDecoderMode: - myPlot->decoder_prev = myPlot->decoder_mode; if (value<=0.2f) { myPlot->decoder_mode = 2; //Stereo } @@ -2529,7 +2611,7 @@ resumeDisplay(); } else if (frame && index == 103){ - myPlot->decoder_mode5x = (int)value; + myPlot->decoder_mode5x = (int)(value*2); myPlot->setDirty(); //ReDraw plot in next idle modeChange(); }
--- a/Source/GUI.h Thu Sep 20 16:41:01 2012 +0100 +++ b/Source/GUI.h Tue Sep 25 21:35:17 2012 +0100 @@ -34,7 +34,7 @@ #ifndef __MyEditor__ #define __MyEditor__ -#define IMAGE 280 +#define IMAGE 281 #define cSep 12 #define tDepth 15 @@ -49,8 +49,6 @@ #include "aeffguieditor.h" #include <vstgui.h> #include "SoundField.h" -//#include <stream.h> -//#include <stdio.h> #include "SoundFieldParameters.h" #include "MyPlot.h" @@ -70,7 +68,6 @@ void setParameter (VstInt32 index, float value); void setParameterAutomated(); void getParameterDisplay (VstInt32 index, char *text); - void syncParameters(); // from CControlListener void valueChanged (CControl* pControl); @@ -89,7 +86,6 @@ void plotDisplay(CFrame* newFrame); void settingsDisplay(CFrame* newFrame); void nameDisplay(CFrame* newFrame); - void setupKnobs(int &setupHoz, int &setupEl, int &setupSep);//REMOVE void modeChange(); void stereoDisplay(); void twooneDisplay(); @@ -107,13 +103,9 @@ void resumeDisplay(); - - private: - - protected: //Parameters CAnimKnob *knobRotate; @@ -179,7 +171,6 @@ CTextLabel *paramChannel; - //Main Controls Section Text CTextLabel *decoderLabel1; @@ -220,8 +211,6 @@ CTextLabel* suspend; CTextLabel* heller1; CTextLabel* heller2; - CTextLabel* bitMode; - CTextLabel* vendor_version; };
--- a/Source/MyPlot.h Thu Sep 20 16:41:01 2012 +0100 +++ b/Source/MyPlot.h Tue Sep 25 21:35:17 2012 +0100 @@ -48,12 +48,5 @@ void heller1Pattern(CDrawContext* context); void heller2Pattern(CDrawContext* context); - - - protected: - }; - - -
--- a/Source/SoundField.cpp Thu Sep 20 16:41:01 2012 +0100 +++ b/Source/SoundField.cpp Tue Sep 25 21:35:17 2012 +0100 @@ -24,25 +24,20 @@ #include "aeffguieditor.h" - -//----------------------------------------------------------------------------- -SoundFieldProgram::SoundFieldProgram () +//----------------------------------------------------------------------------- +SoundFieldProgram::SoundFieldProgram() { - //Define name if all programs are to be the same } + + //----------------------------------------------------------------------------- SoundField::SoundField (audioMasterCallback audioMaster) -: AudioEffectX (audioMaster, 1, kNumParameters) +: AudioEffectX (audioMaster, kNumPrograms, kNumParameters) { - // init - programs = new SoundFieldProgram[numPrograms]; - // if (programs) - // setProgram (0); - //Set the number of input and output channels setNumInputs (4); // 4 Channel Classic B-Format Input setNumOutputs (6); // MAX_CHANNELS 5.1 Outpu @@ -61,19 +56,13 @@ } - //Load GUI extern AEffGUIEditor* createEditor (AudioEffectX*); setEditor (createEditor (this)); - resume (); // flush buffer - - //Default Program Names - vst_strncpy (programs[0].name, "Default",kVstMaxProgNameLen); - vst_strncpy (programName, "Default", kVstMaxProgNameLen); // default program name // Declare any variables to their default values @@ -132,6 +121,256 @@ myDecoder.outputS=0.0; myDecoder.outputSL=0.0; myDecoder.outputSR=0.0; + + + // init + //Initailise all the programs + //Stereo Mode + //Name + vst_strncpy (programs[0][0].name, "Stereo XY Microphones",kVstMaxProgNameLen); + vst_strncpy (programs[0][1].name, "Stereo MS Microphones",kVstMaxProgNameLen); + vst_strncpy (programs[0][2].name, "Stereo Blumlein Fig8s",kVstMaxProgNameLen); + vst_strncpy (programs[0][3].name, "Stereo XY with 'Verb",kVstMaxProgNameLen); + vst_strncpy (programs[0][4].name, "Stereo MS with 'Verb",kVstMaxProgNameLen); + //Mode + programs[0][0].mode = 0.f; + programs[0][1].mode = 1.f; + programs[0][2].mode = 0.f; + programs[0][3].mode = 0.f; + programs[0][4].mode = 1.f; + //Width + programs[0][0].width = (1.f/3.f); + programs[0][1].width = (1.f/3.f); + programs[0][2].width = 0.5f; + programs[0][3].width = (1.f/3.f); + programs[0][4].width = (1.f/3.f); + //Pattern + programs[0][0].pattern = 0.5f; + programs[0][1].pattern = 0.5f; + programs[0][2].pattern = 0.f; + programs[0][3].pattern = 0.5f; + programs[0][4].pattern = 0.5f; + //RearVerb + programs[0][0].rearVerb = 0.f; + programs[0][1].rearVerb = 0.f; + programs[0][2].rearVerb = 0.f; + programs[0][3].rearVerb = 0.75f; + programs[0][4].rearVerb = 0.75f; + //HiVerb + programs[0][0].hiVerb = 0.f; + programs[0][1].hiVerb = 0.f; + programs[0][2].hiVerb = 0.f; + programs[0][3].hiVerb = 0.25f; + programs[0][4].hiVerb = 0.25f; + + + //2.1 Mode + //Name + vst_strncpy (programs[1][0].name, "2.1 XY Microphones",kVstMaxProgNameLen); + vst_strncpy (programs[1][1].name, "2.1 MS Microphones",kVstMaxProgNameLen); + vst_strncpy (programs[1][2].name, "2.1 Blumlein Fig8s",kVstMaxProgNameLen); + vst_strncpy (programs[1][3].name, "2.1 XY with 'Verb",kVstMaxProgNameLen); + vst_strncpy (programs[1][4].name, "2.1 MS with 'Verb",kVstMaxProgNameLen); + //Mode + programs[1][0].mode = 0.f; + programs[1][1].mode = 1.f; + programs[1][2].mode = 0.f; + programs[1][3].mode = 0.f; + programs[1][4].mode = 1.f; + //Width + programs[1][0].width = (1.f/3.f); + programs[1][1].width = (1.f/3.f); + programs[1][2].width = 0.5f; + programs[1][3].width = (1.f/3.f); + programs[1][4].width = (1.f/3.f); + //Pattern + programs[1][0].pattern = 0.5f; + programs[1][1].pattern = 0.5f; + programs[1][2].pattern = 0.f; + programs[1][3].pattern = 0.5f; + programs[1][4].pattern = 0.5f; + //RearVerb + programs[1][0].rearVerb = 0.f; + programs[1][1].rearVerb = 0.f; + programs[1][2].rearVerb = 0.f; + programs[1][3].rearVerb = 0.75f; + programs[1][4].rearVerb = 0.75f; + //HiVerb + programs[1][0].hiVerb = 0.f; + programs[1][1].hiVerb = 0.f; + programs[1][2].hiVerb = 0.f; + programs[1][3].hiVerb = 0.25f; + programs[1][4].hiVerb = 0.25f; + //SubGain + programs[1][0].subGain = 0.75f; + programs[1][1].subGain = 0.75f; + programs[1][2].subGain = 0.75f; + programs[1][3].subGain = 0.75f; + programs[1][4].subGain = 0.75f; + //FC + programs[1][0].fc = 5.0f/11.0f; + programs[1][1].fc = 5.0f/11.0f; + programs[1][2].fc = 5.0f/11.0f; + programs[1][3].fc = 5.0f/11.0f; + programs[1][4].fc = 5.0f/11.0f; + + + + //Quad Mode + //Name + vst_strncpy (programs[2][0].name, "Quad XY Microphones",kVstMaxProgNameLen); + vst_strncpy (programs[2][1].name, "Quad MS Microphones",kVstMaxProgNameLen); + vst_strncpy (programs[2][2].name, "Quad Blumlein Fig8s",kVstMaxProgNameLen); + vst_strncpy (programs[2][3].name, "Quad XY with MS",kVstMaxProgNameLen); + vst_strncpy (programs[2][4].name, "Quad MS with XY",kVstMaxProgNameLen); + //Mode + programs[2][0].mode = 0.f; + programs[2][1].mode = 1.f; + programs[2][2].mode = 0.f; + programs[2][3].mode = 0.f; + programs[2][4].mode = 1.f; + //Width + programs[2][0].width = (1.f/3.f); + programs[2][1].width = (1.f/3.f); + programs[2][2].width = 0.5f; + programs[2][3].width = (1.f/3.f); + programs[2][4].width = (1.f/3.f); + //Pattern + programs[2][0].pattern = 0.5f; + programs[2][1].pattern = 0.5f; + programs[2][2].pattern = 0.f; + programs[2][3].pattern = 0.5f; + programs[2][4].pattern = 0.5f; + //Surround Mode + programs[2][0].surroundMode = 0.f; + programs[2][1].surroundMode = 1.f; + programs[2][2].surroundMode = 0.f; + programs[2][3].surroundMode = 1.f; + programs[2][4].surroundMode = 0.f; + //Surround Width + programs[2][0].surroundWidth = (5.5f/9.f); + programs[2][1].surroundWidth = (5.5f/9.f); + programs[2][2].surroundWidth = 0.5f; + programs[2][3].surroundWidth = (5.5f/9.f); + programs[2][4].surroundWidth = (5.5f/9.f); + //Surround Pattern + programs[2][0].surroundPattern = 0.5; + programs[2][1].surroundPattern = 0.5; + programs[2][2].surroundPattern = 0.0; + programs[2][0].surroundPattern = 0.25; + programs[2][0].surroundPattern = 0.75; + //Surround Gain + programs[2][0].surroundGain = 0.75f; + programs[2][1].surroundGain = 0.75f; + programs[2][2].surroundGain = 0.75f; + programs[2][3].surroundGain = 0.75f; + programs[2][4].surroundGain = 0.75f; + + + //5.0 Mode + //Name + vst_strncpy (programs[3][0].name, "5.0 XY Microphones",kVstMaxProgNameLen); + vst_strncpy (programs[3][1].name, "5.0 MS Microphones",kVstMaxProgNameLen); + vst_strncpy (programs[3][2].name, "5.0 Blumlein Fig8s",kVstMaxProgNameLen); + vst_strncpy (programs[3][3].name, "5.0 Heller et. al. 1",kVstMaxProgNameLen); + vst_strncpy (programs[3][4].name, "5.0 Heller et. al. 2",kVstMaxProgNameLen); + //Mode + programs[3][0].mode = 0.f; + programs[3][1].mode = 1.f; + programs[3][2].mode = 0.f; + //Width + programs[3][0].width = (1.f/3.f); + programs[3][1].width = (1.f/3.f); + programs[3][2].width = 0.5f; + //Pattern + programs[3][0].pattern = 0.5f; + programs[3][1].pattern = 0.5f; + programs[3][2].pattern = 0.f; + //Centre Pattern + programs[3][0].centrePattern = 0.5f; + programs[3][1].centrePattern = 0.5f; + programs[3][2].centrePattern = 0.0f; + //Centre Gain + programs[3][0].centreGain = 0.75f; + programs[3][1].centreGain = 0.75f; + programs[3][2].centreGain = 0.75f; + //Surround Mode + programs[3][0].surroundMode = 0.f; + programs[3][1].surroundMode = 1.f; + programs[3][2].surroundMode = 0.f; + //Surround Width + programs[3][0].surroundWidth = (5.5f/9.f); + programs[3][1].surroundWidth = (5.5f/9.f); + programs[3][2].surroundWidth = 0.5f; + //Surround Pattern + programs[3][0].surroundPattern = 0.5; + programs[3][1].surroundPattern = 0.5; + programs[3][2].surroundPattern = 0.0; + //Surround Gain + programs[3][0].surroundGain = 0.75f; + programs[3][1].surroundGain = 0.75f; + programs[3][2].surroundGain = 0.75f; + + + //5.1 Mode + //Name + vst_strncpy (programs[4][0].name, "5.1 XY Microphones",kVstMaxProgNameLen); + vst_strncpy (programs[4][1].name, "5.1 MS Microphones",kVstMaxProgNameLen); + vst_strncpy (programs[4][2].name, "5.1 Blumlein Fig8s",kVstMaxProgNameLen); + vst_strncpy (programs[4][3].name, "5.1 Heller et. al. 1",kVstMaxProgNameLen); + vst_strncpy (programs[4][4].name, "5.1 Heller et. al. 2",kVstMaxProgNameLen); + //Mode + programs[4][0].mode = 0.f; + programs[4][1].mode = 1.f; + programs[4][2].mode = 0.f; + //Width + programs[4][0].width = (1.f/3.f); + programs[4][1].width = (1.f/3.f); + programs[4][2].width = 0.5f; + //Pattern + programs[4][0].pattern = 0.5f; + programs[4][1].pattern = 0.5f; + programs[4][2].pattern = 0.f; + //Centre Pattern + programs[4][0].centrePattern = 0.5f; + programs[4][1].centrePattern = 0.5f; + programs[4][2].centrePattern = 0.0f; + //Centre Gain + programs[4][0].centreGain = 0.75f; + programs[4][1].centreGain = 0.75f; + programs[4][2].centreGain = 0.75f; + //SubGain + programs[4][0].subGain = 0.75f; + programs[4][1].subGain = 0.75f; + programs[4][2].subGain = 0.75f; + programs[4][3].subGain = 0.75f; + programs[4][4].subGain = 0.75f; + //FC + programs[4][0].fc = 5.0f/11.0f; + programs[4][1].fc = 5.0f/11.0f; + programs[4][2].fc = 5.0f/11.0f; + programs[4][3].fc = 5.0f/11.0f; + programs[4][4].fc = 5.0f/11.0f; + //Surround Mode + programs[4][0].surroundMode = 0.f; + programs[4][1].surroundMode = 1.f; + programs[4][2].surroundMode = 0.f; + //Surround Width + programs[4][0].surroundWidth = (5.5f/9.f); + programs[4][1].surroundWidth = (5.5f/9.f); + programs[4][2].surroundWidth = 0.5f; + //Surround Pattern + programs[4][0].surroundPattern = 0.5; + programs[4][1].surroundPattern = 0.5; + programs[4][2].surroundPattern = 0.0; + //Surround Gain + programs[4][0].surroundGain = 0.75f; + programs[4][1].surroundGain = 0.75f; + programs[4][2].surroundGain = 0.75f; + + + //Load Program0 default + setProgram(0); } @@ -166,45 +405,12 @@ } -//------------------------------------------------------------------------ -void SoundField::setProgram (VstInt32 program) //Host to SET the Program -{ - curProgram = program; //Change the curProgram value -} - - -//------------------------------------------------------------------------ -void SoundField::setProgramName(char *name) //SET the Program name -{ - strcpy(programs[curProgram].name, name); //Host SETS the Program[].name -} - - -//------------------------------------------------------------------------ -void SoundField::getProgramName(char *name) //GET the Program name -{ - strcpy(name, programs[curProgram].name); //Host GETS the Program[].name -} - - -//------------------------------------------------------------------------ -bool SoundField::getProgramNameIndexed (VstInt32 category, VstInt32 which, char* name) -{ - if ((unsigned int)which < kNumPrograms) //Check the ProgramNameIndexed is within range - { - strcpy(name, programs[which].name); //Host GETS the programs[].name - return true; //TRUE- ProgramNameIndexed does exits - } - return false; //FALSE- ProgramNameIndexed does not exits -} //------------------------------------------------------------------------ SoundField::~SoundField () //clears protected variables { - if (programs) - delete[] programs; - + //if (programs) } @@ -219,6 +425,151 @@ //------------------------------------------------------------------------ +bool SoundField::getProgramNameIndexed(VstInt32 category, VstInt32 index, char *text) +{ + switch (myDecoder.decoderMode) { + case 2: + strcpy(text, programs[0][index].name); + break; + case 3: + strcpy(text, programs[1][index].name); + break; + case 4: + strcpy(text, programs[2][index].name); + break; + case 5: + strcpy(text, programs[3][index].name); + break; + case 6: + strcpy(text, programs[4][index].name); + break; + + default: + break; + } + + + + return true; +} + + +//------------------------------------------------------------------------ +void SoundField::setProgram(VstInt32 program) +{ + curProgram = program; + switch (myDecoder.decoderMode) { + case 2: + setParameter(kMode, programs[0][program].mode); + setParameter(kWidth, programs[0][program].width); + setParameter(kPattern, programs[0][program].pattern); + setParameter(kRearVerb, programs[0][program].rearVerb); + setParameter(kHiVerb, programs[0][program].hiVerb); + break; + case 3: + setParameter(kMode, programs[1][program].mode); + setParameter(kWidth, programs[1][program].width); + setParameter(kPattern, programs[1][program].pattern); + setParameter(kRearVerb, programs[1][program].rearVerb); + setParameter(kHiVerb, programs[1][program].hiVerb); + setParameter(kSubGain, programs[1][program].subGain); + setParameter(kFc, programs[1][program].fc); + break; + case 4: + setParameter(kMode, programs[2][program].mode); + setParameter(kWidth, programs[2][program].width); + setParameter(kSurroundMode, programs[2][program].surroundMode); + setParameter(kSurroundWidth, programs[2][program].surroundWidth); + setParameter(kSurroundPattern, programs[2][program].surroundPattern); + setParameter(kSurroundGain, programs[2][program].surroundGain); + break; + case 5: + if (program<3) { + myDecoder.mode5x=0; + + setParameter(kMode, programs[3][program].mode); + setParameter(kWidth, programs[3][program].width); + setParameter(kCentrePattern, programs[3][program].centrePattern); + setParameter(kCentreGain, programs[3][program].centreGain); + setParameter(kSurroundMode, programs[3][program].surroundMode); + setParameter(kSurroundWidth, programs[3][program].surroundWidth); + setParameter(kSurroundPattern, programs[3][program].surroundPattern); + setParameter(kSurroundGain, programs[3][program].surroundGain); + if (editor){ + ((AEffGUIEditor*)editor)->setParameter (103, 0.f); + } + } + else if (program==3) { + myDecoder.mode5x=1; + if (editor){ + ((AEffGUIEditor*)editor)->setParameter (103, 0.5f); + } + } + else if (program==4) { + myDecoder.mode5x=2; + if (editor){ + ((AEffGUIEditor*)editor)->setParameter (103, 1.f); + } + } + break; + case 6: + if (program<3) { + myDecoder.mode5x=0; + + setParameter(kMode, programs[4][program].mode); + setParameter(kWidth, programs[4][program].width); + setParameter(kCentrePattern, programs[4][program].centrePattern); + setParameter(kCentreGain, programs[4][program].centreGain); + setParameter(kSubGain, programs[4][program].subGain); + setParameter(kFc, programs[4][program].fc); + setParameter(kSurroundMode, programs[4][program].surroundMode); + setParameter(kSurroundWidth, programs[4][program].surroundWidth); + setParameter(kSurroundPattern, programs[4][program].surroundPattern); + setParameter(kSurroundGain, programs[4][program].surroundGain); + if (editor){ + ((AEffGUIEditor*)editor)->setParameter (103, 0.f); + } + } + else if (program==3) { + //Only set the sub + setParameter(kSubGain, programs[4][program].subGain); + setParameter(kFc, programs[4][program].fc); + myDecoder.mode5x=1; + if (editor){ + ((AEffGUIEditor*)editor)->setParameter (103, 0.5f); + } + } + else if (program==4) { + //Only set the sub + setParameter(kSubGain, programs[4][program].subGain); + setParameter(kFc, programs[4][program].fc); + myDecoder.mode5x=2; + if (editor){ + ((AEffGUIEditor*)editor)->setParameter (103, 1.f); + } + } + break; + + default: + break; + } +} + + + +//------------------------------------------------------------------------ +VstInt32 SoundField::getProgram() +{ + return curProgram; +} + + + + + + + +//------------------------------------------------------------------------ void SoundField::setParameter (VstInt32 index, float value) // SET Parameter value from host { switch (index) @@ -360,8 +711,8 @@ else if (value>0.8f && value<=1.0f) { myDecoder.decoderMode = 6; //5.1 } + updateDisplay(); break; - case kChannelOrder: fChannelOrder = value; if (value<=0.5f) { @@ -379,6 +730,9 @@ if (editor){ ((AEffGUIEditor*)editor)->setParameter (index, value); } + if (index==kDecoderMode) { + setProgram(curProgram); + } }
--- a/Source/SoundField.h Thu Sep 20 16:41:01 2012 +0100 +++ b/Source/SoundField.h Tue Sep 25 21:35:17 2012 +0100 @@ -10,7 +10,7 @@ // © 2006, Steinberg Media Technologies, All Rights Reserved //------------------------------------------------------------------------------------------------------- -#define kNumPrograms 1 //Number of Programs +#define kNumPrograms 5 //Number of Programs #define MAX_CHANNELS 6 //Max Input/Output Count #define VERSION 1000 //Plugin Version @@ -23,24 +23,38 @@ //Parameters Header #include "SoundFieldParameters.h" - #include "Decoder.h" - - //------------------------------------------------------------------------ struct SoundFieldProgram { - //float param[kNumPrograms]; //Array of - char name[20]; + friend class SoundField; + public: SoundFieldProgram (); ~SoundFieldProgram () {} -private: +private: + char name[kVstMaxProgNameLen]; + float mode; + float width; + float pattern; + float rotate; + float rearVerb; + float hiVerb; + float centrePattern; + float centreGain; + float subGain; + float surroundMode; + float surroundPattern; + float surroundWidth; + float surroundGain; + float fc; +}; -}; + + //------------------------------------------------------------------------ @@ -62,10 +76,9 @@ virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); virtual void processDoubleReplacing (double ** inputs, double ** outputs, VstInt32 sampleFrames); - virtual void setProgram (VstInt32 program); - virtual void setProgramName (char* name); - virtual void getProgramName (char* name); - virtual bool getProgramNameIndexed (VstInt32 category, VstInt32 index, char* text); + virtual bool getProgramNameIndexed (VstInt32 category, VstInt32 index, char *text); + virtual void setProgram(VstInt32 program); + virtual VstInt32 getProgram(); virtual void setParameter (VstInt32 index, float value); virtual float getParameter (VstInt32 index); @@ -80,7 +93,6 @@ virtual bool getProductString (char* text); virtual VstInt32 getVendorVersion (); - virtual VstPlugCategory getPlugCategory () { return kPlugCategSpacializer; } virtual bool setSpeakerArrangement (VstSpeakerArrangement* pluginInput, VstSpeakerArrangement* pluginOutput); @@ -92,20 +104,12 @@ -private: - //Variables/Functions for DSP i.e. private from the Host - SoundFieldProgram* programs; - - - //Private Variables - float* sBuffers[MAX_CHANNELS]; - float* pBuffers[2]; - - char programName[kVstMaxProgNameLen + 1]; - +private: int numberOutputs; int numberInputs; + SoundFieldProgram programs[5][kNumPrograms]; + //Parameter float values float fMode; float fWidth;