# HG changeset patch # User martinm_home # Date 1348155661 -3600 # Node ID 53f99cbc5dbd9355bf597164861c2e65dfd7666e # Parent d967dd1eafe8df46676eca2ac667958ce528d99d Heavily updated GUI. Added Heller et. al. decoding. Changed gain knobs. diff -r d967dd1eafe8 -r 53f99cbc5dbd Classic Ambisonics Decoder VST.xcodeproj/project.pbxproj --- a/Classic Ambisonics Decoder VST.xcodeproj/project.pbxproj Sun Sep 16 23:25:54 2012 +0100 +++ b/Classic Ambisonics Decoder VST.xcodeproj/project.pbxproj Thu Sep 20 16:41:01 2012 +0100 @@ -21,13 +21,17 @@ 0C54F71C15F8BB7500953CE0 /* my_name.png in Resources */ = {isa = PBXBuildFile; fileRef = 0C54F71315F8BB7500953CE0 /* my_name.png */; }; 0C54F71D15F8BB7500953CE0 /* red_blue_knob.png in Resources */ = {isa = PBXBuildFile; fileRef = 0C54F71415F8BB7500953CE0 /* red_blue_knob.png */; }; 0C54F71E15F8BB7500953CE0 /* red_knob.png in Resources */ = {isa = PBXBuildFile; fileRef = 0C54F71515F8BB7500953CE0 /* red_knob.png */; }; - 0C54F71F15F8BB7500953CE0 /* stereo.png in Resources */ = {isa = PBXBuildFile; fileRef = 0C54F71615F8BB7500953CE0 /* stereo.png */; }; 0C54F72015F8BB7500953CE0 /* zoom.png in Resources */ = {isa = PBXBuildFile; fileRef = 0C54F71715F8BB7500953CE0 /* zoom.png */; }; - 0C54F72215F8BBA500953CE0 /* rotations.png in Resources */ = {isa = PBXBuildFile; fileRef = 0C54F72115F8BBA500953CE0 /* rotations.png */; }; 0C7C241B159860DE0050E903 /* audioeffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C7C2416159860DE0050E903 /* audioeffect.cpp */; }; 0C7C241C159860DE0050E903 /* audioeffectx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C7C2418159860DE0050E903 /* audioeffectx.cpp */; }; 0C7C241D159860DE0050E903 /* vstplugmain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C7C241A159860DE0050E903 /* vstplugmain.cpp */; }; + 0C99BF41160A392400FA8FBA /* blue_red_knob.png in Resources */ = {isa = PBXBuildFile; fileRef = 0C99BF40160A392400FA8FBA /* blue_red_knob.png */; }; 0CC1308516045FA400DFB900 /* MyPlot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C54F70415F8BB4C00953CE0 /* MyPlot.cpp */; }; + 0CD671331609B4D500AEBC6F /* controls.png in Resources */ = {isa = PBXBuildFile; fileRef = 0CD6712E1609B4D500AEBC6F /* controls.png */; }; + 0CD671341609B4D500AEBC6F /* controls2.png in Resources */ = {isa = PBXBuildFile; fileRef = 0CD6712F1609B4D500AEBC6F /* controls2.png */; }; + 0CD671351609B4D500AEBC6F /* mode2b_knob.png in Resources */ = {isa = PBXBuildFile; fileRef = 0CD671301609B4D500AEBC6F /* mode2b_knob.png */; }; + 0CD671361609B4D500AEBC6F /* plot.png in Resources */ = {isa = PBXBuildFile; fileRef = 0CD671311609B4D500AEBC6F /* plot.png */; }; + 0CD671371609B4D500AEBC6F /* transforms.png in Resources */ = {isa = PBXBuildFile; fileRef = 0CD671321609B4D500AEBC6F /* transforms.png */; }; 8D01CCCE0486CAD60068D4B7 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */; }; F43771F012439E4600248B30 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F47F241F11D4C30900C94CAF /* Cocoa.framework */; }; F43771F312439E9100248B30 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F47F241C11D4C2F600C94CAF /* Accelerate.framework */; }; @@ -57,9 +61,7 @@ 0C54F71315F8BB7500953CE0 /* my_name.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = my_name.png; path = Resources/my_name.png; sourceTree = ""; }; 0C54F71415F8BB7500953CE0 /* red_blue_knob.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = red_blue_knob.png; path = Resources/red_blue_knob.png; sourceTree = ""; }; 0C54F71515F8BB7500953CE0 /* red_knob.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = red_knob.png; path = Resources/red_knob.png; sourceTree = ""; }; - 0C54F71615F8BB7500953CE0 /* stereo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stereo.png; path = Resources/stereo.png; sourceTree = ""; }; 0C54F71715F8BB7500953CE0 /* zoom.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = zoom.png; path = Resources/zoom.png; sourceTree = ""; }; - 0C54F72115F8BBA500953CE0 /* rotations.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = rotations.png; path = Resources/rotations.png; sourceTree = ""; }; 0C54F72315F9144500953CE0 /* Version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Version.h; path = Source/Version.h; sourceTree = ""; }; 0C7C2412159860DE0050E903 /* aeffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = aeffect.h; path = ../../../../../Users/momont/libraries/vstsdk2.4/pluginterfaces/vst2.x/aeffect.h; sourceTree = ""; }; 0C7C2413159860DE0050E903 /* aeffectx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = aeffectx.h; path = ../../../../../Users/momont/libraries/vstsdk2.4/pluginterfaces/vst2.x/aeffectx.h; sourceTree = ""; }; @@ -70,6 +72,12 @@ 0C7C2418159860DE0050E903 /* audioeffectx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = audioeffectx.cpp; path = ../../../../../Users/momont/libraries/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp; sourceTree = ""; }; 0C7C2419159860DE0050E903 /* audioeffectx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = audioeffectx.h; path = ../../../../../Users/momont/libraries/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.h; sourceTree = ""; }; 0C7C241A159860DE0050E903 /* vstplugmain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = vstplugmain.cpp; path = ../../../../../Users/momont/libraries/vstsdk2.4/public.sdk/source/vst2.x/vstplugmain.cpp; sourceTree = ""; }; + 0C99BF40160A392400FA8FBA /* blue_red_knob.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = blue_red_knob.png; path = Resources/blue_red_knob.png; sourceTree = ""; }; + 0CD6712E1609B4D500AEBC6F /* controls.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = controls.png; path = Resources/controls.png; sourceTree = ""; }; + 0CD6712F1609B4D500AEBC6F /* controls2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = controls2.png; path = Resources/controls2.png; sourceTree = ""; }; + 0CD671301609B4D500AEBC6F /* mode2b_knob.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = mode2b_knob.png; path = Resources/mode2b_knob.png; sourceTree = ""; }; + 0CD671311609B4D500AEBC6F /* plot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = plot.png; path = Resources/plot.png; sourceTree = ""; }; + 0CD671321609B4D500AEBC6F /* transforms.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transforms.png; path = Resources/transforms.png; sourceTree = ""; }; 8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; 8D01CCD20486CAD60068D4B7 /* ClassicAmbisonicsDecoder.vst */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ClassicAmbisonicsDecoder.vst; sourceTree = BUILT_PRODUCTS_DIR; }; F47F241C11D4C2F600C94CAF /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = /System/Library/Frameworks/Accelerate.framework; sourceTree = ""; }; @@ -114,8 +122,13 @@ 089C167CFE841241C02AAC07 /* Resources */ = { isa = PBXGroup; children = ( + 0C99BF40160A392400FA8FBA /* blue_red_knob.png */, + 0CD6712E1609B4D500AEBC6F /* controls.png */, + 0CD6712F1609B4D500AEBC6F /* controls2.png */, + 0CD671301609B4D500AEBC6F /* mode2b_knob.png */, + 0CD671311609B4D500AEBC6F /* plot.png */, + 0CD671321609B4D500AEBC6F /* transforms.png */, 0C22E51B16067A170061F1EB /* mode5_knob.png */, - 0C54F72115F8BBA500953CE0 /* rotations.png */, 0C54F70F15F8BB7500953CE0 /* 360_knob.png */, 0C54F71015F8BB7500953CE0 /* blue_knob.png */, 0C54F71115F8BB7500953CE0 /* mode2_knob.png */, @@ -123,7 +136,6 @@ 0C54F71315F8BB7500953CE0 /* my_name.png */, 0C54F71415F8BB7500953CE0 /* red_blue_knob.png */, 0C54F71515F8BB7500953CE0 /* red_knob.png */, - 0C54F71615F8BB7500953CE0 /* stereo.png */, 0C54F71715F8BB7500953CE0 /* zoom.png */, 8D01CCD10486CAD60068D4B7 /* Info.plist */, ); @@ -243,10 +255,14 @@ 0C54F71C15F8BB7500953CE0 /* my_name.png in Resources */, 0C54F71D15F8BB7500953CE0 /* red_blue_knob.png in Resources */, 0C54F71E15F8BB7500953CE0 /* red_knob.png in Resources */, - 0C54F71F15F8BB7500953CE0 /* stereo.png in Resources */, 0C54F72015F8BB7500953CE0 /* zoom.png in Resources */, - 0C54F72215F8BBA500953CE0 /* rotations.png in Resources */, 0C22E51C16067A170061F1EB /* mode5_knob.png in Resources */, + 0CD671331609B4D500AEBC6F /* controls.png in Resources */, + 0CD671341609B4D500AEBC6F /* controls2.png in Resources */, + 0CD671351609B4D500AEBC6F /* mode2b_knob.png in Resources */, + 0CD671361609B4D500AEBC6F /* plot.png in Resources */, + 0CD671371609B4D500AEBC6F /* transforms.png in Resources */, + 0C99BF41160A392400FA8FBA /* blue_red_knob.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff -r d967dd1eafe8 -r 53f99cbc5dbd Classic Ambisonics Decoder VST.xcodeproj/project.xcworkspace/xcuserdata/momont.xcuserdatad/UserInterfaceState.xcuserstate Binary file Classic Ambisonics Decoder VST.xcodeproj/project.xcworkspace/xcuserdata/momont.xcuserdatad/UserInterfaceState.xcuserstate has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/.DS_Store Binary file Resources/.DS_Store has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/360_knob.knob Binary file Resources/360_knob.knob has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/360_knob.png Binary file Resources/360_knob.png has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/blue_knob.knob Binary file Resources/blue_knob.knob has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/blue_knob.png Binary file Resources/blue_knob.png has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/blue_red_knob.knob Binary file Resources/blue_red_knob.knob has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/blue_red_knob.png Binary file Resources/blue_red_knob.png has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/controls.png Binary file Resources/controls.png has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/controls.xcf Binary file Resources/controls.xcf has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/controls2.png Binary file Resources/controls2.png has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/controls2.xcf Binary file Resources/controls2.xcf has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/mode2b_knob.knob Binary file Resources/mode2b_knob.knob has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/mode2b_knob.png Binary file Resources/mode2b_knob.png has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/my_name.png Binary file Resources/my_name.png has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/my_name.xcf Binary file Resources/my_name.xcf has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/plot.png Binary file Resources/plot.png has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/plot.xcf Binary file Resources/plot.xcf has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/red_blue_knob.knob Binary file Resources/red_blue_knob.knob has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/red_blue_knob.png Binary file Resources/red_blue_knob.png has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/red_knob.knob Binary file Resources/red_knob.knob has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/red_knob.png Binary file Resources/red_knob.png has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/rotations.png Binary file Resources/rotations.png has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/rotations.xcf Binary file Resources/rotations.xcf has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/stereo.png Binary file Resources/stereo.png has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/stereo.xcf Binary file Resources/stereo.xcf has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/transforms.png Binary file Resources/transforms.png has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/transforms.xcf Binary file Resources/transforms.xcf has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/zoom.png Binary file Resources/zoom.png has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Resources/zoom.xcf Binary file Resources/zoom.xcf has changed diff -r d967dd1eafe8 -r 53f99cbc5dbd Source/Decoder.cpp --- a/Source/Decoder.cpp Sun Sep 16 23:25:54 2012 +0100 +++ b/Source/Decoder.cpp Thu Sep 20 16:41:01 2012 +0100 @@ -33,6 +33,38 @@ //Overall Functions int Decoder::processDecoder(double &w, double &x, double &y, double &z) { + //Sound field rotations. Only called if the value is not 0 + if (Rotate!=0.0f) + rotateField(x, y); + + if (Tilt!=0.0f) + tiltField(y, z); + + if (Tumble!=0.0f) + tumbleField(x, z); + + //Zoom function. Only called if the value is not 0 + if (Zoom!=0.0f) { + switch (ZoomMethod) { + case 0: + dominanceZoom(w, x, y, z); + break; + case 1: + pressZoom(w, x, y, z); + break; + case 2: + pushZoom(w, x, y, z); + break; + case 3: + focusZoom(w, x, y, z); + break; + + default: + break; + } + } + + switch (decoderMode) { case 1: monoDecoder(w, x, y, z); @@ -153,82 +185,15 @@ -void Decoder::monoDecoder(double &w, double &x, double &y, double &z) +void Decoder::monoDecoder(double &w, double &x, double &y, double &z)//NOT USED { - //Sound field rotations. Only called if the value is not 0 - if (Rotate!=0.0f) - rotateField(x, y); - - if (Tilt!=0.0f) - tiltField(y, z); - - if (Tumble!=0.0f) - tumbleField(x, z); - - - //Zoom function. Only called if the value is not 0 - if (Zoom!=0.0f) { - switch (ZoomMethod) { - case 0: - dominanceZoom(w, x, y, z); - break; - case 1: - pressZoom(w, x, y, z); - break; - case 2: - pushZoom(w, x, y, z); - break; - case 3: - focusZoom(w, x, y, z); - break; - - default: - break; - } - } - - //Centre virtual mic centreMic(w, x); - }; void Decoder::stereoDecoder(double &w, double &x, double &y, double &z) { - //Sound field rotations. Only called if the value is not 0 - if (Rotate!=0.0f) - rotateField(x, y); - - if (Tilt!=0.0f) - tiltField(y, z); - - if (Tumble!=0.0f) - tumbleField(x, z); - - - //Zoom function. Only called if the value is not 0 - if (Zoom!=0.0f) { - switch (ZoomMethod) { - case 0: - dominanceZoom(w, x, y, z); - break; - case 1: - pressZoom(w, x, y, z); - break; - case 2: - pushZoom(w, x, y, z); - break; - case 3: - focusZoom(w, x, y, z); - break; - - default: - break; - } - } - - switch (Mode) { case 0: xyDecode(w, x, y, z); @@ -253,38 +218,6 @@ void Decoder::twoOneDecoder(double &w, double &x, double &y, double &z) { - //Sound field rotations. Only called if the value is not 0 - if (Rotate!=0.0f) - rotateField(x, y); - - if (Tilt!=0.0f) - tiltField(y, z); - - if (Tumble!=0.0f) - tumbleField(x, z); - - - //Zoom function. Only called if the value is not 0 - if (Zoom!=0.0f) { - switch (ZoomMethod) { - case 0: - dominanceZoom(w, x, y, z); - break; - case 1: - pressZoom(w, x, y, z); - break; - case 2: - pushZoom(w, x, y, z); - break; - case 3: - focusZoom(w, x, y, z); - break; - - default: - break; - } - } - //Subwoofer signal and filtering subSignal(w); filterLF(); @@ -322,39 +255,6 @@ void Decoder::quadDecoder(double &w, double &x, double &y, double &z) { - //Sound field rotations. Only called if the value is not 0 - if (Rotate!=0.0f) - rotateField(x, y); - - if (Tilt!=0.0f) - tiltField(y, z); - - if (Tumble!=0.0f) - tumbleField(x, z); - - - //Zoom function. Only called if the value is not 0 - if (Zoom!=0.0f) { - switch (ZoomMethod) { - case 0: - dominanceZoom(w, x, y, z); - break; - case 1: - pressZoom(w, x, y, z); - break; - case 2: - pushZoom(w, x, y, z); - break; - case 3: - focusZoom(w, x, y, z); - break; - - default: - break; - } - } - - //Front virtual mics switch (Mode) { case 0: @@ -386,66 +286,46 @@ void Decoder::fiveDecoder(double &w, double &x, double &y, double &z) { - //Sound field rotations. Only called if the value is not 0 - if (Rotate!=0.0f) - rotateField(x, y); - - if (Tilt!=0.0f) - tiltField(y, z); - - if (Tumble!=0.0f) - tumbleField(x, z); - - - //Zoom function. Only called if the value is not 0 - if (Zoom!=0.0f) { - switch (ZoomMethod) { - case 0: - dominanceZoom(w, x, y, z); - break; - case 1: - pressZoom(w, x, y, z); - break; - case 2: - pushZoom(w, x, y, z); - break; - case 3: - focusZoom(w, x, y, z); - break; - - default: - break; - } - } - - - //Centre virtual mic - centreMic(w, x); - - //Front virtual mics - switch (Mode) { - case 0: - xyDecode(w, x, y, z); - break; - case 1: - msDecode(w, x, y, z); - break; - default: - break; - } - - //Rear virtual mics - switch (surMode) { - case 0: - xySurDecode(w, x, y, z); - break; - case 1: - msSurDecode(w, x, y, z); - break; - default: - break; - } - + switch (mode5x) { + case 0://Mic Pattern Decode + //Centre virtual mic + centreMic(w, x); + + //Front virtual mics + switch (Mode) { + case 0: + xyDecode(w, x, y, z); + break; + case 1: + msDecode(w, x, y, z); + break; + default: + break; + } + + //Rear virtual mics + switch (surMode) { + case 0: + xySurDecode(w, x, y, z); + break; + case 1: + msSurDecode(w, x, y, z); + break; + default: + break; + } + break; + case 1://Heller 1 Decode - little centre + heller1(w, x, y, z); + break; + case 2://Heller 2 Decode - More centre + heller2(w, x, y, z); + break; + + + default: + break; + } }; @@ -453,38 +333,6 @@ void Decoder::fiveOneDecoder(double &w, double &x, double &y, double &z) { - //Sound field rotations. Only called if the value is not 0 - if (Rotate!=0.0f) - rotateField(x, y); - - if (Tilt!=0.0f) - tiltField(y, z); - - if (Tumble!=0.0f) - tumbleField(x, z); - - - //Zoom function. Only called if the value is not 0 - if (Zoom!=0.0f) { - switch (ZoomMethod) { - case 0: - dominanceZoom(w, x, y, z); - break; - case 1: - pressZoom(w, x, y, z); - break; - case 2: - pushZoom(w, x, y, z); - break; - case 3: - focusZoom(w, x, y, z); - break; - - default: - break; - } - } - //Subwoofer signal and filtering subSignal(w); filterLF(); @@ -492,34 +340,47 @@ filterHF(w, x, y, z); } - //Centre virtual mic - centreMic(w, x); - //Front virtual mics - switch (Mode) { - case 0: - xyDecode(w, x, y, z); - break; - case 1: - msDecode(w, x, y, z); - break; - default: - break; - } - - //Rear virtual mics - switch (surMode) { - case 0: - xySurDecode(w, x, y, z); - break; - case 1: - msSurDecode(w, x, y, z); - break; - default: - break; - } - - + switch (mode5x) { + case 0: + //Centre virtual mic + centreMic(w, x); + + //Front virtual mics + switch (Mode) { + case 0: + xyDecode(w, x, y, z); + break; + case 1: + msDecode(w, x, y, z); + break; + default: + break; + } + + //Rear virtual mics + switch (surMode) { + case 0: + xySurDecode(w, x, y, z); + break; + case 1: + msSurDecode(w, x, y, z); + break; + default: + break; + } + break; + case 1://Heller 1 Decode - little centre + heller1(w, x, y, z); + break; + case 2://Heller 2 Decode - More centre + heller2(w, x, y, z); + break; + + + default: + break; + } }; @@ -533,7 +394,6 @@ double temp = x; x = cos(degRad(Rotate))*temp - sin(degRad(Rotate))*y; y = cos(degRad(Rotate))*y + sin(degRad(Rotate))*temp; - }; @@ -686,6 +546,27 @@ }; +void Decoder::heller1(double &w, double &x, double &y, double &z) +{ + outputL = (0.28205165*w +0.24760232*x +0.18790454*y)*1.40171951577097; + outputR = (0.28204229*w +0.24758662*x -0.18792311*y)*1.40171951577097; + outputC = (-0.04881270*w -0.02756928*x +0.00001724*y)*1.40171951577097; + outputSL = (0.44947336*w -0.23381746*x +0.31911519*y)*1.40171951577097; + outputSR = (0.44945895*w -0.23380219*x -0.31911386*y)*1.40171951577097; +}; + + +void Decoder::heller2(double &w, double &x, double &y, double &z) +{ + outputL = (0.21426224*w +0.19218459*x +0.20409261*y)*1.38921598327229; + outputR = (0.21426400*w +0.19218379*x -0.20409362*y)*1.38921598327229; + outputC = (0.09993309*w +0.15577050*x +0.00000000*y)*1.38921598327229; + outputSL = (0.44287748*w -0.27006948*x +0.30405695*y)*1.38921598327229; + outputSR = (0.44287676*w -0.27006941*x -0.30405595*y)*1.38921598327229; +}; + + + void Decoder::filterCoefs(){ int k = tan((M_PI*abs(Fc))/Fs); double denominator = pow(k, 2) + 2*k + 1; diff -r d967dd1eafe8 -r 53f99cbc5dbd Source/Decoder.h --- a/Source/Decoder.h Sun Sep 16 23:25:54 2012 +0100 +++ b/Source/Decoder.h Thu Sep 20 16:41:01 2012 +0100 @@ -20,8 +20,9 @@ int ZoomMethod; //4 positions //Decoder Speaker Layout - int decoderMode; //Decoder mode, set to same as number of outputs + int decoderMode; //Decoder mode int channelOrder; //Natural or 5.1 ordering + int mode5x; //Hidden mode for 5.x decoders accessed by programs //Front Stereo Speaker Decoding & Reverb double Width; //0-90 degrees @@ -106,6 +107,7 @@ void xySurDecode(double &w, double &x, double &y, double &z); void msSurDecode(double &w, double &x, double &y, double &z); + //Subwoofer void subSignal(double &w); @@ -121,4 +123,7 @@ void quadDecoder(double &w, double &x, double &y, double &z); //Decode to LRCS void fiveDecoder(double &w, double &x, double &y, double &z); //Decode to 5.0 void fiveOneDecoder(double &w, double &x, double &y, double &z); //Decode to 5.1 + void heller1(double &w, double &x, double &y, double &z); + void heller2(double &w, double &x, double &y, double &z); + void craven(double &w, double &x, double &y, double &z); }; \ No newline at end of file diff -r d967dd1eafe8 -r 53f99cbc5dbd Source/GUI.cpp --- a/Source/GUI.cpp Sun Sep 16 23:25:54 2012 +0100 +++ b/Source/GUI.cpp Thu Sep 20 16:41:01 2012 +0100 @@ -51,162 +51,84 @@ MyEditor::MyEditor (void* ptr) : AEffGUIEditor (ptr) { - //CBitmap* plugin_background = new CBitmap ("icme_plugin.png"); rect.left = 0; rect.top = 0; - rect.right = 545;//plugin_background->getWidth (); - rect.bottom = 495;//360;//plugin_background->getHeight (); + 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"); - bRotations = new CBitmap ("rotations.png"); - bZoom = new CBitmap ("zoom.png"); - - - - frameSize (0, 0, 545, 495); + + //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); - - textDepth = 15; - textDepthLarge = 20; - labelOffset = -20; - displayOffset = 7; + //Transforms - int transformsSep = 25; - int transformsHoz = transformsSep; - int transformsEl = 50; - transformsDisplay(transformsHoz, transformsEl, transformsSep, newFrame); - - + transformsDisplay(newFrame); //Zooming - int zoomHoz = transformsHoz + 3*knob_red_blue->getWidth() + 6*transformsSep; - int zoomEl = transformsEl; - int zoomSep = transformsSep; - zoomDisplay(zoomHoz, zoomEl, zoomSep, newFrame); + zoomDisplay(newFrame); - - //Polar Plot - int plotHoz = transformsHoz; - int plotEl = transformsEl + knob_mode2->getHeight()/2 + displayOffset + textDepth + 2*transformsSep; - int plotSep = transformsSep; - plotDisplay(plotHoz, plotEl, plotSep, newFrame); - + plotDisplay(newFrame); //Settings - int settingsHoz = transformsHoz + 3*knob_red_blue->getWidth() + 2.5*transformsSep; - int settingsEl = transformsEl + knob_mode2->getHeight()/2 + displayOffset + textDepth + 2*transformsSep; - int settingsSep = transformsSep; - settingsDisplay(settingsHoz, settingsEl, settingsSep, newFrame); - - - + settingsDisplay(newFrame); //Info Display - int nameHoz = transformsHoz; - int nameEl = plotEl + knob_mode2->getHeight()/2 + displayOffset + textDepth + 2*transformsSep; - int nameSep = transformsSep; - nameDisplay(nameHoz, nameEl, nameSep, newFrame); + nameDisplay(newFrame); - - -// switch ((int)effect->getParameter(103)) { -// case 0: -// { -// -// } -// break; -// -// case 2: -// { - //Stereo Decoding - int stereoHoz = transformsHoz; - int stereoEl = plotEl + knob_mode2->getHeight()/2 + displayOffset + textDepth + 2*transformsSep; - int stereoSep = transformsSep; - stereoDisplay(stereoHoz, stereoEl, stereoSep, newFrame); -// } -// break; -// -// -// -// } - - - - - - - - - - - //Forget Images - knob_360->forget(); - knob_red->forget(); - knob_blue->forget(); - knob_red_blue->forget(); - knob_mode2->forget(); - knob_mode4->forget(); - - bRotations->forget (); - bZoom->forget (); - + //-- 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[kZoom] = knobZoom; - controls[kWidth] = knobWidth; - controls[kPattern] = knobPattern; - controls[kMode] = knobMode; - controls[kRearVerb] = knobRearVerb; - controls[kHiVerb] = knobHiVerb; - //controls[kCentrePattern] = knobCentrePattern; - //controls[kCentreGain] = knobGain; - //controls[kSubGain] = knobSubGain; - //controls[kFc] = knobFc; - //controls[kSurroundMode] = knobSurMode; - //controls[kSurroundPattern] = knobSurPattern; - //controls[kSurroundWidth] = knobSurWidth; - //controls[kSurroundGain] = knobSurGain; controls[kDecoderMode] = knobDecoder; + controls[kChannelOrder] = knobChannel; - - - + //Create main frame frame = newFrame; + + //-- sync parameters - syncParameters(); - + //syncParameters(); + 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; } @@ -228,57 +150,49 @@ //------------------------------------------------------------------------------------ void MyEditor::syncParameters() { -// switch ((int)effect->getParameter(103)) { -// case 0: -// { -// int sync_paramerts [] = {0,1,2,3,4}; -// for (int i = 0; i < 5; i++) //sizeof(syncParameters()) -// setParameter (i, effect->getParameter (sync_paramerts[i])); -// } -// break; -// -// case 2: -// { - for (int i = 0; i < 10; i++)//kNumParameters - setParameter (i, effect->getParameter (i)); -// } -// break; -// } - + for (int i = 0; i < kNumParameters; i++) + setParameter (i, effect->getParameter (i)); } //------------------------------------------------------------------------------------ -void MyEditor::transformsDisplay(int &transformsHoz, int &transformsEl, int &transformsSep, CFrame* newFrame) +void MyEditor::transformsDisplay(CFrame* newFrame) { - CRect transSize = CRect (0, 0, bRotations->getWidth (),bRotations->getHeight ()); - transSize.offset(transformsHoz-transformsSep/2, transformsEl+labelOffset-textDepthLarge); + //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 (bRotations); + transforms_view->setBackground (bTransforms); newFrame->addView (transforms_view); //Rotate - r (0, 0, knob_red_blue->getWidth (), knob_red_blue->getHeight () / 101); - r.offset(transformsHoz, transformsEl); - knobRotate = new CAnimKnob (r, this, kRotate, 101, knob_360->getHeight () / 101, knob_360, CPoint (0, 0));//101, 64, + 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, newFrame->addView (knobRotate); //knobRotate->forget (); //Tilt - r.offset(knob_red_blue->getWidth()+transformsSep, 0); - knobTilt = new CAnimKnob (r, this, kTilt, 101, knob_360->getHeight () / 101, knob_360, CPoint (0, 0)); + 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 (); //Tumble - r.offset(knob_red_blue->getWidth()+transformsSep, 0); - knobTumble = new CAnimKnob (r, this, kTumble, 101, knob_360->getHeight () / 101, knob_360, CPoint (0, 0)); + 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 (); - + @@ -287,8 +201,8 @@ //--CTextLabel-------------------------------------- //Label Rotate - LabelSize (0, 0, knob_red_blue->getWidth (), textDepth); - LabelSize.offset (transformsHoz, transformsEl+labelOffset); + 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); @@ -298,7 +212,7 @@ newFrame->addView (labelRotate); //Label Tilt - LabelSize.offset (knob_red_blue->getWidth()+transformsSep, 0); + LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); CTextLabel* labelTilt = new CTextLabel (LabelSize, 0, 0, kCenterText); labelTilt->setFont (kNormalFontSmall); labelTilt->setFontColor (kLabelText); @@ -308,7 +222,7 @@ newFrame->addView (labelTilt); //Label Tumble - LabelSize.offset (knob_red_blue->getWidth()+transformsSep, 0); + LabelSize.offset (knob_red_blue->getWidth()+cSep, 0); CTextLabel* labelTumble = new CTextLabel (LabelSize, 0, 0, kCenterText); labelTumble->setFont (kNormalFontSmall); labelTumble->setFontColor (kLabelText); @@ -317,10 +231,10 @@ labelTumble->setText("Tumble"); newFrame->addView (labelTumble); - + //Label Section - LabelSize (0, 0, knob_red_blue->getWidth ()*3 + transformsSep*2, textDepthLarge); - LabelSize.offset (transformsHoz, transformsEl+labelOffset - textDepthLarge); + 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); @@ -331,11 +245,11 @@ - + //--CTextLabel-------------------------------------- //Rotate Value - DisplaySize (0, 0, knob_red_blue->getWidth (), textDepth); - DisplaySize.offset (transformsHoz, transformsEl+knob_red_blue->getHeight()/110+displayOffset); + 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); @@ -346,7 +260,7 @@ //Tilt Value - DisplaySize.offset (knob_red_blue->getWidth()+transformsSep, 0); + DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); paramTilt = new CTextLabel (DisplaySize, 0, 0, kCenterText); paramTilt->setHoriAlign(kCenterText); paramTilt->setFont (kNormalFontVerySmall); @@ -357,7 +271,7 @@ //Tumble Value - DisplaySize.offset (knob_red_blue->getWidth()+transformsSep, 0); + DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); paramTumble = new CTextLabel (DisplaySize, 0, 0, kCenterText); paramTumble->setHoriAlign(kCenterText); paramTumble->setFont (kNormalFontVerySmall); @@ -369,32 +283,38 @@ //------------------------------------------------------------------------------------ -void MyEditor::zoomDisplay(int &zoomHoz, int &zoomEl, int &zoomSep, CFrame* newFrame) +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(zoomHoz-zoomSep/2, zoomEl+labelOffset-textDepthLarge); + zoomSize.offset(hPos, ePos); CView* zoom_view = new CView (zoomSize); zoom_view->setBackground (bZoom); newFrame->addView (zoom_view); //ZoomMethod - CRect r (0, 0, knob_red_blue->getWidth (), knob_red_blue->getHeight () / 101); - r.offset(zoomHoz, zoomEl); + 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 (); //Zoom - r.offset(knob_mode4->getWidth()+zoomSep, 0); - knobZoom = new CAnimKnob (r, this, kZoom, 101, knob_red_blue->getHeight () / 101, knob_red_blue, CPoint (0, 0)); + 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 (); //--CTextLabel-------------------------------------- //Label ZoomMethod - LabelSize (0, 0, knob_red_blue->getWidth (), textDepth); - LabelSize.offset (zoomHoz, zoomEl+labelOffset); + 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); @@ -404,7 +324,7 @@ newFrame->addView (labelZoomMethod); //Label Zoom - LabelSize.offset (knob_mode4->getWidth()+zoomSep, 0); + LabelSize.offset (knob_mode4->getWidth()+cSep, 0); CTextLabel* labelZoom = new CTextLabel (LabelSize, 0, 0, kCenterText); labelZoom->setFont (kNormalFontSmall); labelZoom->setFontColor (kLabelText); @@ -414,8 +334,8 @@ newFrame->addView (labelZoom); //Label Section - LabelSize (0, 0, knob_red_blue->getWidth ()*2 + zoomSep*1, textDepthLarge); - LabelSize.offset (zoomHoz, zoomEl+labelOffset - textDepthLarge); + 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); @@ -427,8 +347,8 @@ //--CTextLabel-------------------------------------- //Zoom Method - DisplaySize (0, 0, knob_red_blue->getWidth (), textDepth); - DisplaySize.offset (zoomHoz, zoomEl+knob_red_blue->getHeight()/110+displayOffset); + 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); @@ -438,7 +358,7 @@ newFrame->addView (paramZoomMethod); //Zoom Value - DisplaySize.offset (knob_red_blue->getWidth()+zoomSep, 0); + DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0); paramZoom = new CTextLabel (DisplaySize, 0, 0, kCenterText); paramZoom->setHoriAlign(kCenterText); paramZoom->setFont (kNormalFontVerySmall); @@ -451,215 +371,1432 @@ //------------------------------------------------------------------------------------ -void MyEditor::stereoDisplay(int &stereoHoz, int &stereoEl, int &stereoSep, CFrame* newFrame) +void MyEditor::stereoDisplay() { - bStereo = new CBitmap ("stereo.png"); + //FIRST OFF - define a top coordinate + int hPos = cSep; + int ePos = 288; - CRect stereoSize = CRect (0, 0, bStereo->getWidth (),bStereo->getHeight ()); - stereoSize.offset(stereoHoz-stereoSep/2, stereoEl+labelOffset-textDepthLarge); - CView* stereo_view = new CView (stereoSize); - stereo_view->setBackground (bStereo); - newFrame->addView (stereo_view); + 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); + + + + //Mode r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2); - r.offset(stereoHoz, stereoEl); + r.offset(hPos+cSep,ePos+kOffset); knobMode = new CHorizontalSwitch (r, this, kMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0)); - newFrame->addView (knobMode); - //knobMode->forget (); + getFrame()->addView (knobMode); //Width - r.offset(knob_mode2->getWidth()+stereoSep, 0); - knobWidth = new CAnimKnob (r, this, kWidth, 101, knob_red->getHeight () / 101, knob_red, CPoint (0, 0)); - newFrame->addView (knobWidth); - //knobWidth->forget (); + 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); //Pattern - r.offset(knob_red_blue->getWidth()+stereoSep, 0); - knobPattern = new CAnimKnob (r, this, kPattern, 101, knob_blue->getHeight () / 101, knob_blue, CPoint (0, 0)); - newFrame->addView (knobPattern); - //knobPattern->forget (); - + 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); + //RearVerb - r.offset(knob_mode2->getWidth()+stereoSep*4, 0); - knobRearVerb = new CAnimKnob (r, this, kRearVerb, 101, knob_red_blue->getHeight () / 101, knob_red, CPoint (0, 0)); - newFrame->addView (knobRearVerb); - //knobRearVerb->forget (); + 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); //HiVerb - r.offset(knob_red_blue->getWidth()+stereoSep, 0); - knobHiVerb = new CAnimKnob (r, this, kHiVerb, 101, knob_red_blue->getHeight () / 101, knob_blue, CPoint (0, 0)); - newFrame->addView (knobHiVerb); - //knobHiVerb->forget (); + 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); - - - - + //--CTextLabel-------------------------------------- //Label Mode - LabelSize (0, 0, knob_red_blue->getWidth (), textDepth); - LabelSize.offset (stereoHoz, stereoEl+labelOffset); - CTextLabel* labelMode = new CTextLabel (LabelSize, 0, 0, kCenterText); + 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"); - newFrame->addView (labelMode); + getFrame()->addView (labelMode); //Label Width - LabelSize.offset (knob_red_blue->getWidth()+stereoSep, 0); - CTextLabel* labelWidth = new CTextLabel (LabelSize, 0, 0, kCenterText); + 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"); - newFrame->addView (labelWidth); + getFrame()->addView (labelWidth); //Label Pattern - LabelSize.offset (knob_red_blue->getWidth()+stereoSep, 0); - CTextLabel* labelPattern = new CTextLabel (LabelSize, 0, 0, kCenterText); + 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"); - newFrame->addView (labelPattern); + getFrame()->addView (labelPattern); //Label RearVerb - LabelSize.offset (knob_red_blue->getWidth()+stereoSep*4, 0); - CTextLabel* labelRearVerb = new CTextLabel (LabelSize, 0, 0, kCenterText); + 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"); - newFrame->addView (labelRearVerb); + getFrame()->addView (labelRearVerb); //Label HiVerb - LabelSize.offset (knob_red_blue->getWidth()+stereoSep, 0); - CTextLabel* labelHiVerb = new CTextLabel (LabelSize, 0, 0, kCenterText); + 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"); - newFrame->addView (labelHiVerb); + getFrame()->addView (labelHiVerb); - + //Label Section - LabelSize (0, 0, knob_red_blue->getWidth ()*5 + stereoSep*7, textDepthLarge); - LabelSize.offset (stereoHoz, stereoEl+labelOffset - textDepthLarge); - CTextLabel* labelStereo = new CTextLabel (LabelSize, 0, 0, kCenterText); - labelStereo->setFont (kNormalFontBig); - labelStereo->setFontColor (kLabelText); - labelStereo->setBackColor (kBlank); - labelStereo->setFrameColor (kBlank); - labelStereo->setText("Stereo Decoding & Reverb"); - newFrame->addView (labelStereo); + 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); - + //--CTextLabel-------------------------------------- //Mode Value - DisplaySize (0, 0, knob_red_blue->getWidth (), textDepth); - DisplaySize.offset (stereoHoz, stereoEl+knob_red_blue->getHeight()/110+displayOffset); + 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); - newFrame->addView (paramMode); - paramMode->forget(); + getFrame()->addView (paramMode); + //Width Value - DisplaySize.offset (knob_red_blue->getWidth()+stereoSep, 0); + 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); - newFrame->addView (paramWidth); - paramWidth->forget(); + getFrame()->addView (paramWidth); + //Pattern Value - DisplaySize.offset (knob_red_blue->getWidth()+stereoSep, 0); + 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); - newFrame->addView (paramPattern); - paramPattern->forget(); + getFrame()->addView (paramPattern); + //RearVerb Value - DisplaySize.offset (knob_red_blue->getWidth()+stereoSep*4, 0); + 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); - newFrame->addView (paramRearVerb); - paramRearVerb->forget(); + getFrame()->addView (paramRearVerb); + //HiVerb Value - DisplaySize.offset (knob_red_blue->getWidth()+stereoSep, 0); + 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); - newFrame->addView (paramHiVerb); - paramHiVerb->forget(); - - //ModeStereo Value - DisplaySize.offset (-7*stereoSep-4*knob_red->getWidth(), 0); - paramModeStereo = new CTextLabel (DisplaySize, 0, 0, kCenterText); - paramModeStereo->setHoriAlign(kCenterText); - paramModeStereo->setFont (kNormalFontVerySmall); - paramModeStereo->setFontColor (kDisplayText); - paramModeStereo->setBackColor (kDisplayBackground); - paramModeStereo->setFrameColor (kBlackCColor); - newFrame->addView (paramModeStereo); - paramModeStereo->forget(); - - - bStereo->forget (); + getFrame()->addView (paramHiVerb); + + controls[kMode] = knobMode; + controls[kWidth] = knobWidth; + controls[kPattern] = knobPattern; + controls[kRearVerb] = knobRearVerb; + controls[kHiVerb] = knobHiVerb; + //controls[kCentrePattern] = knobCentrePattern; + //controls[kCentreGain] =knobCentreGain; + //controls[kSubGain] = knobSubGain; + //controls[kFc] = knobFc; + //controls[kSurroundMode] = knobSurroundMode; + //controls[kSurroundPattern] = knobSurroundPattern; + //controls[kSurroundWidth] = knobSurroundWidth; + //controls[kSurroundGain] = knobSurroundGain; } //------------------------------------------------------------------------------------ -void MyEditor::nameDisplay(int &nameHoz, int &nameEl, int &nameSep, CFrame* newFrame) +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); + + + 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); + + + + //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); + + //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); + + //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); + + //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); + + //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); + + //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); + + //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); + + + + + + + //--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); + + //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); + + //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); + + //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); + + //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); + + //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); + + //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); + + + + + + + //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); + + + + + //--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); + + + //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); + + + //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); + + + //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); + + + //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); + + + //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); + + + //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); + + controls[kMode] = knobMode; + controls[kWidth] = knobWidth; + controls[kPattern] = knobPattern; + controls[kRearVerb] = knobRearVerb; + controls[kHiVerb] = knobHiVerb; + //controls[kCentrePattern] = knobCentrePattern; + //controls[kCentreGain] =knobCentreGain; + controls[kSubGain] = knobSubGain; + controls[kFc] = knobFc; + //controls[kSurroundMode] = knobSurroundMode; + //controls[kSurroundPattern] = knobSurroundPattern; + //controls[kSurroundWidth] = knobSurroundWidth; + //controls[kSurroundGain] = knobSurroundGain; +} + + + +//------------------------------------------------------------------------------------ +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); + + + + + //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); + + //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); + + //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); + + + //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); + + //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); + + //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); + + //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); + + + + + + + //--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); + + //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); + + //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); + + //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); + + //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); + + //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); + + //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); + + + + + + //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); + + + + + //--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); + + + //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); + + + //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); + + + //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); + + + //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); + + //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); + + //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); + + controls[kMode] = knobMode; + controls[kWidth] = knobWidth; + controls[kPattern] = knobPattern; + //controls[kRearVerb] = knobRearVerb; + //controls[kHiVerb] = knobHiVerb; + //controls[kCentrePattern] = knobCentrePattern; + //controls[kCentreGain] =knobCentreGain; + //controls[kSubGain] = knobSubGain; + //controls[kFc] = knobFc; + controls[kSurroundMode] = knobSurroundMode; + controls[kSurroundPattern] = knobSurroundPattern; + controls[kSurroundWidth] = knobSurroundWidth; + controls[kSurroundGain] = knobSurroundGain; +} + + + + + +//------------------------------------------------------------------------------------ +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); + + + 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); + + + + //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); + + //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); + + //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); + + + //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); + + //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); + + //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); + + //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); + + + + + + //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); + + //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); + + + + + + + + //--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); + + //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); + + //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); + + //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); + + //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); + + //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); + + //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); + + + + //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); + + //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); + + + + + + + //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); + + + + + //--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); + + + //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); + + + //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); + + + //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); + + + //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); + + //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); + + //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); + + + + //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); + + + //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); + + + controls[kMode] = knobMode; + controls[kWidth] = knobWidth; + controls[kPattern] = knobPattern; + //controls[kRearVerb] = knobRearVerb; + //controls[kHiVerb] = knobHiVerb; + controls[kCentrePattern] = knobCentrePattern; + controls[kCentreGain] =knobCentreGain; + //controls[kSubGain] = knobSubGain; + //controls[kFc] = knobFc; + controls[kSurroundMode] = knobSurroundMode; + controls[kSurroundPattern] = knobSurroundPattern; + controls[kSurroundWidth] = knobSurroundWidth; + controls[kSurroundGain] = knobSurroundGain; +} + + + + + + +//------------------------------------------------------------------------------------ +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); + + + 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); + + + + //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); + + //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); + + //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); + + + //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); + + //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); + + //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); + + //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); + + + + + + //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); + + //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); + + //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); + + //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); + + + + + + + //--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); + + //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); + + //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); + + //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); + + //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); + + //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); + + //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); + + + + //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); + + //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); + + //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); + + //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); + + + + + + + //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); + + + + + //--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); + + + //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); + + + //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); + + + //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); + + + //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); + + //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); + + //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); + + + + //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); + + + //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); + + + //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); + + + //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); + + controls[kMode] = knobMode; + controls[kWidth] = knobWidth; + controls[kPattern] = knobPattern; + //controls[kRearVerb] = knobRearVerb; + //controls[kHiVerb] = knobHiVerb; + controls[kCentrePattern] = knobCentrePattern; + controls[kCentreGain] =knobCentreGain; + controls[kSubGain] = knobSubGain; + controls[kFc] = knobFc; + controls[kSurroundMode] = knobSurroundMode; + controls[kSurroundPattern] = knobSurroundPattern; + controls[kSurroundWidth] = knobSurroundWidth; + controls[kSurroundGain] = knobSurroundGain; +} + + + +//------------------------------------------------------------------------------------ +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); + + 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); +}; + + + +//------------------------------------------------------------------------------------ +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(nameHoz-nameSep/2, nameEl+knob_mode2->getHeight()/2+displayOffset+textDepth+nameSep/2); + nameSize.offset(hPos, ePos); CView* name_view = new CView (nameSize); name_view->setBackground (bName); newFrame->addView (name_view); - LabelSize (0, 0, 160, textDepth); - LabelSize.offset(nameHoz, nameEl+knob_mode2->getHeight()/2+displayOffset+textDepth+nameSep/2+40); - //LabelSize.offset (nameHoz, nameEl+labelOffset); + LabelSize (0, 0, 160, tDepth); + LabelSize.offset(hPos+cSep, ePos+cSep+tDepth+10); CTextLabel *vendor_version = new CTextLabel(LabelSize, 0, 0, kLeftText); char text[100]; @@ -677,10 +1814,9 @@ newFrame->addView (vendor_version); vendor_version->forget(); - LabelSize.offset(0, -20); + LabelSize.offset(0, -(tDepth+10)); bitMode = new CTextLabel(LabelSize, 0, 0, kLeftText); - int b = effect->getParameter(102); - sprintf(text,"Bit Mode: %d", b); + sprintf(text,"Bit Mode: %d", (int)effect->getParameter(102)); bitMode->setText(text); bitMode->setFont (kNormalFontSmall); bitMode->setFontColor (kLabelText); @@ -696,59 +1832,67 @@ //------------------------------------------------------------------------------------ -void MyEditor::plotDisplay(int &plotHoz, int &plotEl, int &plotSep, CFrame* newFrame) +void MyEditor::plotDisplay(CFrame* newFrame) { - CRect plotArea (0, 0, bZoom->getWidth (),bZoom->getHeight ()); - plotArea.offset(plotHoz-plotSep/2, plotEl+labelOffset-textDepthLarge); + //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(bZoom); + plotBackground->setBackground(bPlot); newFrame->addView (plotBackground); - CRect plotSize (0, 0, bZoom->getWidth (), bZoom->getHeight ()); - plotSize.offset(plotHoz-plotSep/2, plotEl+labelOffset-textDepthLarge); + CRect plotSize (0, 0, bPlot->getWidth (), bPlot->getHeight ()); + plotSize.offset(hPos, ePos); myPlot = new polarPlot(plotSize); - //myPlot->setBackground(bRotations); - //myPlot->setDirty(); newFrame->addView (myPlot); } //------------------------------------------------------------------------------------ -void MyEditor::settingsDisplay(int &settingsHoz, int &settingsEl, int &settingsSep, CFrame* newFrame) +void MyEditor::settingsDisplay(CFrame* newFrame) { - CRect plotArea (0, 0, bRotations->getWidth (),bRotations->getHeight ()); - plotArea.offset(settingsHoz-settingsSep/2, settingsEl+labelOffset-textDepthLarge); + //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(bRotations); + settingsBackground->setBackground(bSettings); newFrame->addView (settingsBackground); - - - //Label Section - LabelSize (0, 0, bRotations->getWidth (), textDepthLarge); - LabelSize.offset (settingsHoz-settingsSep/2, settingsEl+labelOffset - textDepthLarge); - 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); - + //Decoder Mode Knob r (0, 0, knob_mode5->getWidth (), knob_mode5->getHeight () / 5); - r.offset(settingsHoz, settingsEl); + 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 (); + //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 (); + + + + //Label Decoder Mode - LabelSize (0, 0, knob_mode5->getWidth (), textDepth); - LabelSize.offset (settingsHoz, settingsEl+labelOffset); + 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); @@ -757,9 +1901,23 @@ labelDecoder->setText("Decoding"); newFrame->addView (labelDecoder); + //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); + + + + + //Decoder Mode Value - DisplaySize (0, 0, knob_mode5->getWidth (), textDepth); - DisplaySize.offset (settingsHoz, settingsEl+knob_mode5->getHeight()/5); + 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); @@ -767,41 +1925,406 @@ paramDecoder->setBackColor (kDisplayBackground); paramDecoder->setFrameColor (kBlackCColor); newFrame->addView (paramDecoder); - paramDecoder->forget(); -// //--COptionMenu-------------------------------------- -// CRect size (0, 0, 50, 14); -// size.offset (settingsHoz, settingsEl); -// -// long style = k3DIn | kMultipleCheckStyle; -// settingsMenu = new COptionMenu (size, this, kDecoderMode, 0, 0, style); -// if (settingsMenu) -// { -// settingsMenu->setFont (kNormalFontSmall); -// settingsMenu->setFontColor (kLabelText); -// settingsMenu->setBackColor (kWhiteCColor); -// settingsMenu->setFrameColor (kLabelText); -// settingsMenu->setHoriAlign (kLeftText); -// settingsMenu->addEntry ("Stereo");//2 -// settingsMenu->addEntry ("2.1");//3 -// settingsMenu->addEntry ("LCRS");//4 -// settingsMenu->addEntry ("5.0");//5 -// settingsMenu->addEntry ("5.1");//6 -// -// -// newFrame->addView (settingsMenu); -// } + //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); + + + + //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); +} + + + +//------------------------------------------------------------------------------------ +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 + 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(knobWidth); + getFrame()->removeView(knobPattern); + getFrame()->removeView(knobMode); + 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: + clearFive(); + if (myPlot->decoder_mode5x != 0) { + clearHeller();//Blank Out Controls + } + break; + case 6: + clearFiveOne(); + if (myPlot->decoder_mode5x != 0) { + clearHeller();//Blank Out Controls + } + 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; + } + +} + + + //------------------------------------------------------------------------------------ void MyEditor::suspendDisplay() { suspend = new CTextLabel(frameSize, 0, 0, kCenterText); - suspend->setBackColor(CColor(23,25,26,150)); + suspend->setBackColor(CColor(23,25,26,200));//150 suspend->setFont (kNormalFontVeryBig); suspend->setFontColor (CColor (255,255,255,255)); suspend->setText("Currently Suspended"); @@ -833,29 +2356,36 @@ //-- 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) - { //First write the value into the GUI value container - controls[index]->setValue (value); + { + bool exists = false; //Checks if control exists, needed for outside automation - - //Call getParameterDisplay to get the char to display - getParameterDisplay (index, &displayText); //Will this work with no switch? - - - //Set the polar plot variables if they've changed and the decoder mode display + switch (index) { - - - //Second anything that affests the plot - case kPattern: - myPlot->pattern = (double)value; - myPlot->setDirty(); + case kRotate: + if (knobRotate) { + exists = true; + } break; - - case kWidth: - myPlot->width = (double)value*90; - myPlot->setDirty(); + case kTilt: + if (knobTilt) { + exists = true; + } break; - + case kTumble: + if (knobTumble) { + exists = true; + } + break; + case kZoom: + if (knobZoom) { + exists = true; + } + break; + case kZoomMethod: + if (knobZoomMethod) { + exists = true; + } + break; case kMode: if (value<=0.5f) { myPlot->stereo_mode = 0; @@ -864,18 +2394,58 @@ myPlot->stereo_mode = 1; } myPlot->setDirty(); + if (knobMode) { + exists = true; + } break; - + case kWidth: + myPlot->width = (double)value*90; + myPlot->setDirty(); + if (knobWidth) { + exists = true; + } + break; + case kPattern: + myPlot->pattern = (double)value; + myPlot->setDirty(); + if (knobPattern) { + exists = true; + } + break; + case kRearVerb: + if (knobHiVerb) { + exists = true; + } + break; + case kHiVerb: + if (knobRearVerb) { + exists = true; + } + break; case kCentrePattern: myPlot->centre_pattern = (double)value; myPlot->setDirty(); + if (knobCentrePattern) { + exists = true; + } break; - case kCentreGain: myPlot->centre_gain = (double)((value*24)-18); myPlot->setDirty(); + if (knobCentreGain) { + exists = true; + } break; - + case kSubGain: + if (knobSubGain) { + exists = true; + } + break; + case kFc: + if (knobFc) { + exists = true; + } + break; case kSurroundMode: if (value<=0.5f) { myPlot->surround_mode = 0; @@ -884,24 +2454,33 @@ myPlot->surround_mode = 1; } myPlot->setDirty(); + if (knobSurroundMode) { + exists = true; + } break; - case kSurroundPattern: myPlot->surround_pattern = (double)value; myPlot->setDirty(); + if (knobSurroundPattern) { + exists = true; + } break; - case kSurroundWidth: myPlot->surround_width = (double)value*90; myPlot->setDirty(); + if (knobSurroundWidth) { + exists = true; + } break; - case kSurroundGain: myPlot->surround_gain = (double)((value*24)-18); myPlot->setDirty(); + if (knobSurroundGain) { + exists = true; + } break; - case kDecoderMode: + myPlot->decoder_prev = myPlot->decoder_mode; if (value<=0.2f) { myPlot->decoder_mode = 2; //Stereo } @@ -918,11 +2497,29 @@ myPlot->decoder_mode = 6; //5.1 } myPlot->setDirty(); + modeChange(); + if (knobDecoder) { + exists = true; + } break; - + case kChannelOrder: + if (knobChannel) { + exists = true; + } + default: break; + } + if (exists) { + //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(); @@ -931,8 +2528,11 @@ else if (frame && index == 101) { resumeDisplay(); } - - + else if (frame && index == 103){ + myPlot->decoder_mode5x = (int)value; + myPlot->setDirty(); //ReDraw plot in next idle + modeChange(); + } } @@ -942,15 +2542,6 @@ effect->getParameterDisplay(index, text); switch (index) { - case kMode : - paramModeStereo->setText(text); - break; - case kWidth: - paramWidth->setText(text); - break; - case kPattern: - paramPattern->setText(text); - break; case kRotate : paramRotate->setText(text); break; @@ -966,16 +2557,51 @@ 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; diff -r d967dd1eafe8 -r 53f99cbc5dbd Source/GUI.h --- a/Source/GUI.h Sun Sep 16 23:25:54 2012 +0100 +++ b/Source/GUI.h Thu Sep 20 16:41:01 2012 +0100 @@ -34,6 +34,18 @@ #ifndef __MyEditor__ #define __MyEditor__ +#define IMAGE 280 + +#define cSep 12 +#define tDepth 15 +#define tDepthLarge 20 +#define dOffset 3 +#define kOffset (1*dOffset + tDepth + tDepthLarge) +#define lOffset kOffset-(1*dOffset + tDepth) +#define tOffset kOffset-(1*dOffset + tDepth + tDepthLarge) +#define pOffset kOffset+(64+dOffset) + + #include "aeffguieditor.h" #include #include "SoundField.h" @@ -46,18 +58,19 @@ + class MyEditor : public AEffGUIEditor, public CControlListener { public: MyEditor (void*); // from AEffGUIEditor - bool open (void* ptr); - void close (); - void setParameter (VstInt32 index, float value); - void setParameterAutomated(); - void getParameterDisplay (VstInt32 index, char *text); - void syncParameters(); + bool open (void* ptr); + void close (); + void setParameter (VstInt32 index, float value); + void setParameterAutomated(); + void getParameterDisplay (VstInt32 index, char *text); + void syncParameters(); // from CControlListener void valueChanged (CControl* pControl); @@ -67,44 +80,42 @@ CControl* controls[kNumParameters]; char displayText; - CTextLabel* paramMode; - CTextLabel* paramModeSelect; - CTextLabel* paramWidth; - CTextLabel* paramPattern; - CTextLabel* paramRotate; - CTextLabel* paramTilt; - CTextLabel* paramTumble; - CTextLabel* paramZoom; - CTextLabel* paramZoomMethod; - CTextLabel* paramRearVerb; - CTextLabel* paramHiVerb; - CTextLabel* paramModeStereo; - - CTextLabel* paramDecoder; - - polarPlot* myPlot; + // own function - void transformsDisplay(int &transformsHoz, int &transformsEl, int &transformsSep, CFrame* newFrame); - void zoomDisplay(int &zoomHoz, int &zoomEl, int &zoomSep, CFrame* newFrame); - void stereoDisplay(int &stereoHoz, int &stereoEl, int &stereoSep, CFrame* newFrame); - void nameDisplay(int &nameHoz, int &nameEl, int &nameSep, CFrame* newFrame); - void plotDisplay(int &plotHoz, int &plotEl, int &plotSep, CFrame* newFrame); - void settingsDisplay(int &settingsHoz, int &settingsEl, int &settingsSep, CFrame* newFrame); - void suspendDisplay(); - void resumeDisplay(); + void transformsDisplay(CFrame* newFrame); + void zoomDisplay(CFrame* newFrame); + 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(); + void fourDisplay(); + void fiveDisplay(); + void fiveoneDisplay(); + void hellerDisplay(); + void clearStereo(); + void clearTwoOne(); + void clearFour(); + void clearFive(); + void clearFiveOne(); + void clearHeller(); + void suspendDisplay(); + void resumeDisplay(); + private: protected: - int textDepth, textDepthLarge, labelOffset, displayOffset; - + //Parameters CAnimKnob *knobRotate; CAnimKnob *knobTilt; CAnimKnob *knobTumble; @@ -115,8 +126,68 @@ CHorizontalSwitch *knobMode; CAnimKnob *knobRearVerb; CAnimKnob *knobHiVerb; + CAnimKnob *knobCentrePattern; + CAnimKnob *knobCentreGain; + CAnimKnob *knobSubGain; + CAnimKnob *knobFc; + CHorizontalSwitch *knobSurroundMode; + CAnimKnob *knobSurroundPattern; + CAnimKnob *knobSurroundWidth; + CAnimKnob *knobSurroundGain; CHorizontalSwitch *knobDecoder; - + CHorizontalSwitch *knobChannel; + + //Main Controls Section Background + CView *control_view; + CView *control_view2; + + //Controls Text Labels + CTextLabel *labelMode; + CTextLabel *labelWidth; + CTextLabel *labelPattern; + CTextLabel *labelRearVerb; + CTextLabel *labelHiVerb; + CTextLabel *labelSurMode; + CTextLabel *labelSurWidth; + CTextLabel *labelSurPattern; + CTextLabel *labelSurGain; + CTextLabel *labelCtrPattern; + CTextLabel *labelCtreGain; + CTextLabel *labelSubGain; + CTextLabel *labelFc; + + //Controls Parameters + CTextLabel *paramMode; + CTextLabel *paramWidth; + CTextLabel *paramPattern; + CTextLabel *paramRotate; + CTextLabel *paramTilt; + CTextLabel *paramTumble; + CTextLabel *paramZoom; + CTextLabel *paramZoomMethod; + CTextLabel *paramRearVerb; + CTextLabel *paramHiVerb; + CTextLabel *paramSurMode; + CTextLabel *paramSurWidth; + CTextLabel *paramSurPattern; + CTextLabel *paramSurGain; + CTextLabel *paramCtrPattern; + CTextLabel *paramCtrGain; + CTextLabel *paramSubGain; + CTextLabel *paramFc; + CTextLabel *paramDecoder; + CTextLabel *paramChannel; + + + + //Main Controls Section Text + CTextLabel *decoderLabel1; + + //Polar Plot + polarPlot* myPlot; + + + CRect frameSize; CRect DisplaySize; CRect LabelSize; @@ -132,17 +203,25 @@ CBitmap* knob_red; CBitmap* knob_blue; CBitmap* knob_red_blue; + CBitmap* knob_blue_red; CBitmap* knob_mode2; + CBitmap* knob_mode2b; CBitmap* knob_mode4; CBitmap* knob_mode5; - CBitmap *bRotations; + CBitmap *bTransforms; CBitmap *bZoom; - CBitmap *bStereo; + CBitmap *bControls; + CBitmap *bControls2; CBitmap *bName; + CBitmap *bPlot; + CBitmap *bSettings; CTextLabel* suspend; + CTextLabel* heller1; + CTextLabel* heller2; CTextLabel* bitMode; + CTextLabel* vendor_version; }; diff -r d967dd1eafe8 -r 53f99cbc5dbd Source/MyPlot.cpp --- a/Source/MyPlot.cpp Sun Sep 16 23:25:54 2012 +0100 +++ b/Source/MyPlot.cpp Thu Sep 20 16:41:01 2012 +0100 @@ -24,7 +24,8 @@ surround_pattern = 0.5; surround_width = 60; surround_mode = 0; - decoder_mode = 2; + decoder_mode = 0; + decoder_prev = 0; }; @@ -59,21 +60,52 @@ break; case 5: - //5.0 Mic Patterns - leftMicPattern(context); - rightMicPattern(context); - centreMicPattern(context); - lsMicPattern(context); - rsMicPattern(context); + switch (decoder_mode5x) { + case 0: + //5.0 Mic Patterns + leftMicPattern(context); + rightMicPattern(context); + centreMicPattern(context); + lsMicPattern(context); + rsMicPattern(context); + break; + case 1: + //Heller 1 Plot + heller1Pattern(context); + break; + case 2: + //Heller 2 Plot + heller2Pattern(context); + break; + + default: + break; + } + break; case 6: - //5.1 Mic Patterns - leftMicPattern(context); - rightMicPattern(context); - centreMicPattern(context); - lsMicPattern(context); - rsMicPattern(context); + switch (decoder_mode5x) { + case 0: + //5.1 Mic Patterns + leftMicPattern(context); + rightMicPattern(context); + centreMicPattern(context); + lsMicPattern(context); + rsMicPattern(context); + break; + case 1: + //Heller 1 Plot + heller1Pattern(context); + break; + case 2: + //Heller 2 Plot + heller2Pattern(context); + break; + + default: + break; + } break; @@ -82,50 +114,7 @@ } - - - - - setDirty(false); - - - - //context->beginDraw(); - //context->drawRect(size); - - - // CBitmap *knob_knob = new CBitmap ("360_knob.png"); - // context->drawBitmap(knob_knob, size); - // - // - // //Plot Ellipse - // context->setLineWidth (6); - // CColor eclColor = CColor(120,120,120,255); - // context->setFrameColor(eclColor); - // CRect hi = CRect(20, 20, 130, 130); - // context->drawEllipse(hi); - - - // double x = 75; - // double y=75; - // context->setFrameColor(kBlueCColor); - // context->setLineWidth (2); - // CRect fatPoint = CRect(x-1,y-1,x+1,y+1); - // context->drawEllipse(fatPoint); - - - //CPoint *myPoint = new CPoint(50,50); - //context->drawPolygon(myPoint, 3); - - //context->setFillColor(eclColor); - //context->setFrameColor(eclColor); - - - //context->endDraw(); - - - //setDirty (false); }; @@ -172,8 +161,8 @@ - x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius); //size.left + - y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius); //+ PLOT_OFFSET + x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius); + y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius); context->beginDraw(); CPoint point = CPoint((int)x, (int)y); @@ -230,7 +219,7 @@ void polarPlot::centreMicPattern(CDrawContext* context)//To finish updating { - CColor yellowColor = CColor(255,255,0,255); + CColor yellowColor = CColor(255,215,0,255); double radius, x, y; int ang = 0; @@ -239,8 +228,8 @@ radius = fabs(centre_pattern+(1-centre_pattern)*(cos((ang)/180.0*M_PI))) * size.getHeight()/2*0.8; - x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius*pow(10,(centre_gain/20))); //size.left + - y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius*pow(10,(centre_gain/20))); //+ PLOT_OFFSET + x = size.getCenter().x - (sin(ang/180.0*M_PI)*(radius*(pow(10,centre_gain/gFactor/20)))); + y = size.getCenter().y - (cos(ang/180.0*M_PI)*(radius*(pow(10,centre_gain/gFactor/20)))); context->beginDraw(); CPoint point = CPoint((int)x, (int)y); @@ -284,8 +273,8 @@ - x = size.getCenter().x + (sin(ang/180.0*M_PI)*radius*pow(10,(surround_gain/20))); - y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius*pow(10,(surround_gain/20))); + x = size.getCenter().x + (sin(ang/180.0*M_PI)*(radius*(pow(10,surround_gain/gFactor/20)))); + y = size.getCenter().y - (cos(ang/180.0*M_PI)*(radius*(pow(10,surround_gain/gFactor/20)))); context->beginDraw(); CPoint point = CPoint((int)x, (int)y); @@ -325,8 +314,8 @@ - x = size.getCenter().x + (sin(ang/180.0*M_PI)*radius*pow(10,(surround_gain/20))); - y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius*pow(10,(surround_gain/20))); + x = size.getCenter().x + (sin(ang/180.0*M_PI)*(radius*(pow(10,surround_gain/gFactor/20)))); + y = size.getCenter().y - (cos(ang/180.0*M_PI)*(radius*(pow(10,surround_gain/gFactor/20)))); context->beginDraw(); CPoint point = CPoint((int)x, (int)y); @@ -338,5 +327,186 @@ }; +void polarPlot::heller1Pattern(VSTGUI::CDrawContext *context) +{ + double radius, x, y; + int ang = 0; + + //Left Polar + CColor redColor = CColor(255,0,0,255); + while (ang<360) { + radius = 1.4017195157709*fabs(0.28205165*(1/sqrt(2.0)) +0.24760232*(cos(ang/180.0*M_PI)) +0.18790454*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8; + x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius); + y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius); + + context->beginDraw(); + CPoint point = CPoint((int)x, (int)y); + context->drawPoint(point, redColor); + context->endDraw(); + + ang++; + } + //Right Polar + CColor blueColor = CColor(0,0,255,255); + ang = 0; + while (ang<360) { + radius = 1.4017195157709*fabs(0.28204229*(1/sqrt(2.0)) +0.24758662*(cos(ang/180.0*M_PI)) -0.18792311*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8; + + x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius); + y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius); + + context->beginDraw(); + CPoint point = CPoint((int)x, (int)y); + context->drawPoint(point, blueColor); + context->endDraw(); + + ang++; + } + + + //SL Polar Pattern + CColor greenColor = CColor(0,255,0,255); + ang = 0; + while (ang<360) { + radius = 1.40171951577099*fabs(0.44947336*(1/sqrt(2.0)) -0.23381746*(cos(ang/180.0*M_PI)) +0.31911519*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8; + + x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius); + y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius); + + context->beginDraw(); + CPoint point = CPoint((int)x, (int)y); + context->drawPoint(point, greenColor); + context->endDraw(); + + ang++; + } + + //SR Polar Pattern + CColor brownColor = CColor(139,69,19,255); + ang = 0; + while (ang<360) { + radius = 1.4017195157709*fabs(0.44945895*(1/sqrt(2.0)) -0.23380219*(cos(ang/180.0*M_PI)) -0.31911386*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8; + + x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius); + y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius); + + context->beginDraw(); + CPoint point = CPoint((int)x, (int)y); + context->drawPoint(point, brownColor); + context->endDraw(); + + ang++; + } + + //C Polar Pattern + CColor yellowColor = CColor(255,215,0,255); + ang = 0; + while (ang<360) { + radius = 1.4017195157709*fabs(-0.04881270*(1/sqrt(2.0)) -0.02756928*(cos(ang/180.0*M_PI)) +0.00001724*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8; + + x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius); + y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius); + + context->beginDraw(); + CPoint point = CPoint((int)x, (int)y); + context->drawPoint(point, yellowColor); + context->endDraw(); + + ang++; + } +}; + + +void polarPlot::heller2Pattern(VSTGUI::CDrawContext *context) +{ + double radius, x, y; + int ang = 0; + + //Left Polar + CColor redColor = CColor(255,0,0,255); + while (ang<360) { + radius = 1.38921598327229*fabs(0.21426224*(1/sqrt(2.0)) +0.19218459*(cos(ang/180.0*M_PI)) +0.20409261*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8; + + x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius); + y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius); + + context->beginDraw(); + CPoint point = CPoint((int)x, (int)y); + context->drawPoint(point, redColor); + context->endDraw(); + + ang++; + } + + //Right Polar + CColor blueColor = CColor(0,0,255,255); + ang = 0; + while (ang<360) { + radius = 1.38921598327229*fabs(0.21426400*(1/sqrt(2.0)) +0.19218379*(cos(ang/180.0*M_PI)) -0.20409362*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8; + + x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius); + y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius); + + context->beginDraw(); + CPoint point = CPoint((int)x, (int)y); + context->drawPoint(point, blueColor); + context->endDraw(); + + ang++; + } + + + //SL Polar Pattern + CColor greenColor = CColor(0,255,0,255); + ang = 0; + while (ang<360) { + radius = 1.38921598327229*fabs(0.44287748*(1/sqrt(2.0)) -0.27006948*(cos(ang/180.0*M_PI)) +0.30405695*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8; + + x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius); + y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius); + + context->beginDraw(); + CPoint point = CPoint((int)x, (int)y); + context->drawPoint(point, greenColor); + context->endDraw(); + + ang++; + } + + //SR Polar Pattern + CColor brownColor = CColor(139,69,19,255); + ang = 0; + while (ang<360) { + radius = 1.38921598327229*fabs(0.44287676*(1/sqrt(2.0)) -0.27006941*(cos(ang/180.0*M_PI)) -0.30405595*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8; + + x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius); + y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius); + + context->beginDraw(); + CPoint point = CPoint((int)x, (int)y); + context->drawPoint(point, brownColor); + context->endDraw(); + + ang++; + } + + //C Polar Pattern + CColor yellowColor = CColor(255,215,0,255); + ang = 0; + while (ang<360) { + radius = 1.38921598327229*fabs(0.09993309*(1/sqrt(2.0)) +0.15577050*(cos(ang/180.0*M_PI)) +0.00000000*(sin(ang/180.0*M_PI))) * size.getHeight()/2*0.8; + + x = size.getCenter().x - (sin(ang/180.0*M_PI)*radius); + y = size.getCenter().y - (cos(ang/180.0*M_PI)*radius); + + context->beginDraw(); + CPoint point = CPoint((int)x, (int)y); + context->drawPoint(point, yellowColor); + context->endDraw(); + + ang++; + } +}; + diff -r d967dd1eafe8 -r 53f99cbc5dbd Source/MyPlot.h --- a/Source/MyPlot.h Sun Sep 16 23:25:54 2012 +0100 +++ b/Source/MyPlot.h Thu Sep 20 16:41:01 2012 +0100 @@ -14,6 +14,7 @@ #ifndef __vstgui__ #include "vstgui.h" #endif +#define gFactor 12 class polarPlot : public CView @@ -33,6 +34,8 @@ double surround_width; double surround_gain; int decoder_mode; + int decoder_prev; + int decoder_mode5x; //Functions void draw (CDrawContext* context); @@ -42,7 +45,8 @@ void centreMicPattern(CDrawContext* context); void lsMicPattern(CDrawContext* context); void rsMicPattern(CDrawContext* context); - + void heller1Pattern(CDrawContext* context); + void heller2Pattern(CDrawContext* context); diff -r d967dd1eafe8 -r 53f99cbc5dbd Source/SoundField.cpp --- a/Source/SoundField.cpp Sun Sep 16 23:25:54 2012 +0100 +++ b/Source/SoundField.cpp Thu Sep 20 16:41:01 2012 +0100 @@ -45,17 +45,18 @@ //Set the number of input and output channels setNumInputs (4); // 4 Channel Classic B-Format Input - setNumOutputs (6); // MAX_CHANNELS 5.1 Output + setNumOutputs (6); // MAX_CHANNELS 5.1 Outpu + setUniqueID ('MMca'); // this should be unique, use the Steinberg web page for plugin Id registration + canDoubleReplacing(); //Plugin can use process double replacing + canProcessReplacing(); //Plugin can use process replacing + noTail (); - - setUniqueID ('MMca'); // this should be unique, use the Steinberg web page for plugin Id registration + bool bit64 = setProcessPrecision(kVstProcessPrecision64); - - if(setProcessPrecision(kVstProcessPrecision64)){ - setProcessPrecision(kVstProcessPrecision64); + if (bit64==true) { bits=64; } - else { + else{ bits=32; } @@ -68,8 +69,6 @@ resume (); // flush buffer - canProcessReplacing(); //Plugin can use process replacing - noTail (); //Default Program Names vst_strncpy (programs[0].name, "Default",kVstMaxProgNameLen); @@ -115,7 +114,7 @@ myDecoder.surMode=0; myDecoder.surPattern=0.5; myDecoder.surWidth=60.0; - myDecoder.subGain=0.0; + myDecoder.surGain = 0.0; myDecoder.Fc = 120; myDecoder.centrePattern=0.5; myDecoder.centreGain=0.0; @@ -124,7 +123,7 @@ myDecoder.filterCoefs(); myDecoder.decoderMode=2; //Default mode is Stereo myDecoder.channelOrder=0; - + myDecoder.mode5x=0; // Zero up decoder outputs as a safety myDecoder.outputL=0.0; @@ -157,14 +156,6 @@ //------------------------------------------------------------------------ -//bool SoundField::getSpeakerArrangement (VstSpeakerArrangement** pluginInput, VstSpeakerArrangement** pluginOutput) -//{ -// *pluginInput = plugInput; -// *pluginOutput = plugOutput; -// return true; -//} - -//------------------------------------------------------------------------ bool SoundField::setSpeakerArrangement (VstSpeakerArrangement* pluginInput, VstSpeakerArrangement* pluginOutput) { @@ -461,11 +452,12 @@ break; - case 102: + //HIDDEN PArameters for GUI Control + case 102: //Bit Mode for GUI display returnFloat = bits; break; case 103: - returnFloat = myDecoder.decoderMode; + returnFloat = myDecoder.mode5x; break; default: @@ -845,8 +837,6 @@ //--------------------------------------------------------------------------- void SoundField::processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames) //The part that does some actual DSP. This section takes the input audio and gives the output audio back. { - - while (--sampleFrames >= 0) //Do this process if the audio is running { //Set the internal B-Format values as doubles. @@ -886,6 +876,51 @@ for (int i=0; i= 0) //Do this process if the audio is running + { + //Set the internal B-Format values as doubles. + double w, x, y, z; + switch (numberInputs) { + case 3: + w = (double) *inputs[0]++; + x = (double) *inputs[1]++; + y = (double) *inputs[2]++; + z = 0; + break; + + case 4: + w = (double) *inputs[0]++; + x = (double) *inputs[1]++; + y = (double) *inputs[2]++; + z = (double) *inputs[3]++; + break; + + default: + w = 0; + x = 0; + y = 0; + z = 0; + break; + } + + + int numOut; + numOut = myDecoder.processDecoder(w, x, y, z); //Process B-Format + + if (numOut<=numberOutputs) { + for (int i=0; i