From 06b19d09efd9c7ee5afb264475eba042ad6790d4 Mon Sep 17 00:00:00 2001 From: Chris Johnson Date: Sun, 20 Oct 2019 20:00:40 -0400 Subject: Monitoring Threedux --- plugins/LinuxVST/src/Monitoring/MonitoringProc.cpp | 102 ++++++++++++++------- plugins/MacAU/Monitoring/Monitoring.cpp | 56 +++++++---- .../christopherjohnson.pbxuser | 50 +++++----- .../christopherjohnson.perspectivev3 | 69 +++++++++----- .../christopherjohnson.pbxuser | 52 +++++++---- .../christopherjohnson.perspectivev3 | 73 +++++++++++---- .../MacVST/Monitoring/source/MonitoringProc.cpp | 102 ++++++++++++++------- plugins/WinVST/Monitoring/.vs/VSTProject/v14/.suo | Bin 22528 -> 23040 bytes plugins/WinVST/Monitoring/MonitoringProc.cpp | 102 ++++++++++++++------- 9 files changed, 405 insertions(+), 201 deletions(-) diff --git a/plugins/LinuxVST/src/Monitoring/MonitoringProc.cpp b/plugins/LinuxVST/src/Monitoring/MonitoringProc.cpp index db51380..ae46dca 100755 --- a/plugins/LinuxVST/src/Monitoring/MonitoringProc.cpp +++ b/plugins/LinuxVST/src/Monitoring/MonitoringProc.cpp @@ -320,24 +320,37 @@ void Monitoring::processReplacing(float **inputs, float **outputs, VstInt32 samp case 13: case 14: case 15: + if (processing == 12) {inputSampleL *= 0.855; inputSampleR *= 0.855;} + if (processing == 13) {inputSampleL *= 0.748; inputSampleR *= 0.748;} + if (processing == 14) {inputSampleL *= 0.713; inputSampleR *= 0.713;} + if (processing == 15) {inputSampleL *= 0.680; inputSampleR *= 0.680;} + //we do a volume compensation immediately to gain stage stuff cleanly inputSampleL = sin(inputSampleL); inputSampleR = sin(inputSampleR); long double drySampleL; drySampleL = inputSampleL; long double drySampleR; drySampleR = inputSampleR; //everything runs 'inside' Console + long double bass; bass = (processing * processing * 0.00001) / overallscale; + //we are using the iir filters from out of SubsOnly + + mid = inputSampleL + inputSampleR; side = inputSampleL - inputSampleR; + iirSampleAL = (iirSampleAL * (1.0 - (bass*0.618))) + (side * bass * 0.618); side = side - iirSampleAL; + inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; + //bass narrowing filter allpasstemp = ax - 1; if (allpasstemp < 0 || allpasstemp > am) allpasstemp = am; inputSampleL -= aL[allpasstemp]*0.5; aL[ax] = inputSampleL; inputSampleL *= 0.5; inputSampleR -= aR[allpasstemp]*0.5; aR[ax] = inputSampleR; inputSampleR *= 0.5; + ax--; if (ax < 0 || ax > am) {ax = am;} - inputSampleL += (aL[ax]); - inputSampleR += (aR[ax]); - //a single Midiverb-style allpass + inputSampleL += (aL[ax])*0.5; inputSampleR += (aR[ax])*0.5; + if (ax == am) {inputSampleL += (aL[0])*0.5; inputSampleR += (aR[0])*0.5;} + else {inputSampleL += (aL[ax+1])*0.5; inputSampleR += (aR[ax+1])*0.5;} + //a darkened Midiverb-style allpass if (processing == 12) {inputSampleL *= 0.125; inputSampleR *= 0.125;} if (processing == 13) {inputSampleL *= 0.25; inputSampleR *= 0.25;} - if (processing == 14) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - if (processing == 15) {drySampleL *= 0.5; drySampleR *= 0.5;} - if (processing == 15) {inputSampleL *= 0.5; inputSampleR *= 0.5;} + if (processing == 14) {inputSampleL *= 0.30; inputSampleR *= 0.30;} + if (processing == 15) {inputSampleL *= 0.35; inputSampleR *= 0.35;} //Cans A suppresses the crossfeed more, Cans B makes it louder drySampleL += inputSampleR; @@ -346,23 +359,28 @@ void Monitoring::processReplacing(float **inputs, float **outputs, VstInt32 samp allpasstemp = dx - 1; if (allpasstemp < 0 || allpasstemp > dm) allpasstemp = dm; inputSampleL -= dL[allpasstemp]*0.5; dL[dx] = inputSampleL; inputSampleL *= 0.5; inputSampleR -= dR[allpasstemp]*0.5; dR[dx] = inputSampleR; inputSampleR *= 0.5; + dx--; if (dx < 0 || dx > dm) {dx = dm;} - inputSampleL += (dL[dx]); - inputSampleR += (dR[dx]); - //a single Midiverb-style allpass, which is stretching the previous one even more + inputSampleL += (dL[dx])*0.5; inputSampleR += (dR[dx])*0.5; + if (dx == dm) {inputSampleL += (dL[0])*0.5; inputSampleR += (dR[0])*0.5;} + else {inputSampleL += (dL[dx+1])*0.5; inputSampleR += (dR[dx+1])*0.5;} + //a darkened Midiverb-style allpass, which is stretching the previous one even more - if (processing == 12) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - if (processing == 13) {inputSampleL *= 0.25; inputSampleR *= 0.25;} - if (processing == 14) {inputSampleL *= 0.125; inputSampleR *= 0.125;} - if (processing == 15) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - //Cans A already had crossfeeds down, bloom is louder. Cans B sits on bloom more + inputSampleL *= 0.25; inputSampleR *= 0.25; + //for all versions of Cans the second level of bloom is this far down + //and, remains on the opposite speaker rather than crossing again to the original side - drySampleL += inputSampleL; - drySampleR += inputSampleR; //add the crossfeed and very faint extra verbyness + drySampleL += inputSampleR; + drySampleR += inputSampleL; //add the crossfeed and very faint extra verbyness inputSampleL = drySampleL; inputSampleR = drySampleR; //and output our can-opened headphone feed + mid = inputSampleL + inputSampleR; side = inputSampleL - inputSampleR; + iirSampleAR = (iirSampleAR * (1.0 - bass)) + (side * bass); side = side - iirSampleAR; + inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; + //bass narrowing filter + if (inputSampleL > 1.0) inputSampleL = 1.0; if (inputSampleL < -1.0) inputSampleL = -1.0; inputSampleL = asin(inputSampleL); if (inputSampleR > 1.0) inputSampleR = 1.0; if (inputSampleR < -1.0) inputSampleR = -1.0; inputSampleR = asin(inputSampleR); //ConsoleBuss processing @@ -804,24 +822,37 @@ void Monitoring::processDoubleReplacing(double **inputs, double **outputs, VstIn case 13: case 14: case 15: + if (processing == 12) {inputSampleL *= 0.855; inputSampleR *= 0.855;} + if (processing == 13) {inputSampleL *= 0.748; inputSampleR *= 0.748;} + if (processing == 14) {inputSampleL *= 0.713; inputSampleR *= 0.713;} + if (processing == 15) {inputSampleL *= 0.680; inputSampleR *= 0.680;} + //we do a volume compensation immediately to gain stage stuff cleanly inputSampleL = sin(inputSampleL); inputSampleR = sin(inputSampleR); long double drySampleL; drySampleL = inputSampleL; long double drySampleR; drySampleR = inputSampleR; //everything runs 'inside' Console + long double bass; bass = (processing * processing * 0.00001) / overallscale; + //we are using the iir filters from out of SubsOnly + + mid = inputSampleL + inputSampleR; side = inputSampleL - inputSampleR; + iirSampleAL = (iirSampleAL * (1.0 - (bass*0.618))) + (side * bass * 0.618); side = side - iirSampleAL; + inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; + //bass narrowing filter allpasstemp = ax - 1; if (allpasstemp < 0 || allpasstemp > am) allpasstemp = am; inputSampleL -= aL[allpasstemp]*0.5; aL[ax] = inputSampleL; inputSampleL *= 0.5; inputSampleR -= aR[allpasstemp]*0.5; aR[ax] = inputSampleR; inputSampleR *= 0.5; + ax--; if (ax < 0 || ax > am) {ax = am;} - inputSampleL += (aL[ax]); - inputSampleR += (aR[ax]); - //a single Midiverb-style allpass + inputSampleL += (aL[ax])*0.5; inputSampleR += (aR[ax])*0.5; + if (ax == am) {inputSampleL += (aL[0])*0.5; inputSampleR += (aR[0])*0.5;} + else {inputSampleL += (aL[ax+1])*0.5; inputSampleR += (aR[ax+1])*0.5;} + //a darkened Midiverb-style allpass if (processing == 12) {inputSampleL *= 0.125; inputSampleR *= 0.125;} if (processing == 13) {inputSampleL *= 0.25; inputSampleR *= 0.25;} - if (processing == 14) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - if (processing == 15) {drySampleL *= 0.5; drySampleR *= 0.5;} - if (processing == 15) {inputSampleL *= 0.5; inputSampleR *= 0.5;} + if (processing == 14) {inputSampleL *= 0.30; inputSampleR *= 0.30;} + if (processing == 15) {inputSampleL *= 0.35; inputSampleR *= 0.35;} //Cans A suppresses the crossfeed more, Cans B makes it louder drySampleL += inputSampleR; @@ -830,27 +861,32 @@ void Monitoring::processDoubleReplacing(double **inputs, double **outputs, VstIn allpasstemp = dx - 1; if (allpasstemp < 0 || allpasstemp > dm) allpasstemp = dm; inputSampleL -= dL[allpasstemp]*0.5; dL[dx] = inputSampleL; inputSampleL *= 0.5; inputSampleR -= dR[allpasstemp]*0.5; dR[dx] = inputSampleR; inputSampleR *= 0.5; + dx--; if (dx < 0 || dx > dm) {dx = dm;} - inputSampleL += (dL[dx]); - inputSampleR += (dR[dx]); - //a single Midiverb-style allpass, which is stretching the previous one even more + inputSampleL += (dL[dx])*0.5; inputSampleR += (dR[dx])*0.5; + if (dx == dm) {inputSampleL += (dL[0])*0.5; inputSampleR += (dR[0])*0.5;} + else {inputSampleL += (dL[dx+1])*0.5; inputSampleR += (dR[dx+1])*0.5;} + //a darkened Midiverb-style allpass, which is stretching the previous one even more - if (processing == 12) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - if (processing == 13) {inputSampleL *= 0.25; inputSampleR *= 0.25;} - if (processing == 14) {inputSampleL *= 0.125; inputSampleR *= 0.125;} - if (processing == 15) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - //Cans A already had crossfeeds down, bloom is louder. Cans B sits on bloom more + inputSampleL *= 0.25; inputSampleR *= 0.25; + //for all versions of Cans the second level of bloom is this far down + //and, remains on the opposite speaker rather than crossing again to the original side - drySampleL += inputSampleL; - drySampleR += inputSampleR; //add the crossfeed and very faint extra verbyness + drySampleL += inputSampleR; + drySampleR += inputSampleL; //add the crossfeed and very faint extra verbyness inputSampleL = drySampleL; inputSampleR = drySampleR; //and output our can-opened headphone feed + mid = inputSampleL + inputSampleR; side = inputSampleL - inputSampleR; + iirSampleAR = (iirSampleAR * (1.0 - bass)) + (side * bass); side = side - iirSampleAR; + inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; + //bass narrowing filter + if (inputSampleL > 1.0) inputSampleL = 1.0; if (inputSampleL < -1.0) inputSampleL = -1.0; inputSampleL = asin(inputSampleL); if (inputSampleR > 1.0) inputSampleR = 1.0; if (inputSampleR < -1.0) inputSampleR = -1.0; inputSampleR = asin(inputSampleR); //ConsoleBuss processing - break; + break; } diff --git a/plugins/MacAU/Monitoring/Monitoring.cpp b/plugins/MacAU/Monitoring/Monitoring.cpp index 1a9cc9a..53a6d7a 100755 --- a/plugins/MacAU/Monitoring/Monitoring.cpp +++ b/plugins/MacAU/Monitoring/Monitoring.cpp @@ -571,49 +571,67 @@ OSStatus Monitoring::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFl case 13: case 14: case 15: + if (processing == 12) {inputSampleL *= 0.855; inputSampleR *= 0.855;} + if (processing == 13) {inputSampleL *= 0.748; inputSampleR *= 0.748;} + if (processing == 14) {inputSampleL *= 0.713; inputSampleR *= 0.713;} + if (processing == 15) {inputSampleL *= 0.680; inputSampleR *= 0.680;} + //we do a volume compensation immediately to gain stage stuff cleanly inputSampleL = sin(inputSampleL); inputSampleR = sin(inputSampleR); long double drySampleL; drySampleL = inputSampleL; long double drySampleR; drySampleR = inputSampleR; //everything runs 'inside' Console - + long double bass; bass = (processing * processing * 0.00001) / overallscale; + //we are using the iir filters from out of SubsOnly + + mid = inputSampleL + inputSampleR; side = inputSampleL - inputSampleR; + iirSampleAL = (iirSampleAL * (1.0 - (bass*0.618))) + (side * bass * 0.618); side = side - iirSampleAL; + inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; + //bass narrowing filter + allpasstemp = ax - 1; if (allpasstemp < 0 || allpasstemp > am) allpasstemp = am; inputSampleL -= aL[allpasstemp]*0.5; aL[ax] = inputSampleL; inputSampleL *= 0.5; inputSampleR -= aR[allpasstemp]*0.5; aR[ax] = inputSampleR; inputSampleR *= 0.5; + ax--; if (ax < 0 || ax > am) {ax = am;} - inputSampleL += (aL[ax]); - inputSampleR += (aR[ax]); - //a single Midiverb-style allpass + inputSampleL += (aL[ax])*0.5; inputSampleR += (aR[ax])*0.5; + if (ax == am) {inputSampleL += (aL[0])*0.5; inputSampleR += (aR[0])*0.5;} + else {inputSampleL += (aL[ax+1])*0.5; inputSampleR += (aR[ax+1])*0.5;} + //a darkened Midiverb-style allpass if (processing == 12) {inputSampleL *= 0.125; inputSampleR *= 0.125;} if (processing == 13) {inputSampleL *= 0.25; inputSampleR *= 0.25;} - if (processing == 14) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - if (processing == 15) {drySampleL *= 0.5; drySampleR *= 0.5;} - if (processing == 15) {inputSampleL *= 0.5; inputSampleR *= 0.5;} + if (processing == 14) {inputSampleL *= 0.30; inputSampleR *= 0.30;} + if (processing == 15) {inputSampleL *= 0.35; inputSampleR *= 0.35;} //Cans A suppresses the crossfeed more, Cans B makes it louder - + drySampleL += inputSampleR; drySampleR += inputSampleL; //the crossfeed allpasstemp = dx - 1; if (allpasstemp < 0 || allpasstemp > dm) allpasstemp = dm; inputSampleL -= dL[allpasstemp]*0.5; dL[dx] = inputSampleL; inputSampleL *= 0.5; inputSampleR -= dR[allpasstemp]*0.5; dR[dx] = inputSampleR; inputSampleR *= 0.5; + dx--; if (dx < 0 || dx > dm) {dx = dm;} - inputSampleL += (dL[dx]); - inputSampleR += (dR[dx]); - //a single Midiverb-style allpass, which is stretching the previous one even more + inputSampleL += (dL[dx])*0.5; inputSampleR += (dR[dx])*0.5; + if (dx == dm) {inputSampleL += (dL[0])*0.5; inputSampleR += (dR[0])*0.5;} + else {inputSampleL += (dL[dx+1])*0.5; inputSampleR += (dR[dx+1])*0.5;} + //a darkened Midiverb-style allpass, which is stretching the previous one even more - if (processing == 12) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - if (processing == 13) {inputSampleL *= 0.25; inputSampleR *= 0.25;} - if (processing == 14) {inputSampleL *= 0.125; inputSampleR *= 0.125;} - if (processing == 15) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - //Cans A already had crossfeeds down, bloom is louder. Cans B sits on bloom more - - drySampleL += inputSampleL; - drySampleR += inputSampleR; //add the crossfeed and very faint extra verbyness + inputSampleL *= 0.25; inputSampleR *= 0.25; + //for all versions of Cans the second level of bloom is this far down + //and, remains on the opposite speaker rather than crossing again to the original side + + drySampleL += inputSampleR; + drySampleR += inputSampleL; //add the crossfeed and very faint extra verbyness inputSampleL = drySampleL; inputSampleR = drySampleR; //and output our can-opened headphone feed + mid = inputSampleL + inputSampleR; side = inputSampleL - inputSampleR; + iirSampleAR = (iirSampleAR * (1.0 - bass)) + (side * bass); side = side - iirSampleAR; + inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; + //bass narrowing filter + if (inputSampleL > 1.0) inputSampleL = 1.0; if (inputSampleL < -1.0) inputSampleL = -1.0; inputSampleL = asin(inputSampleL); if (inputSampleR > 1.0) inputSampleR = 1.0; if (inputSampleR < -1.0) inputSampleR = -1.0; inputSampleR = asin(inputSampleR); //ConsoleBuss processing diff --git a/plugins/MacAU/Monitoring/Monitoring.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/Monitoring/Monitoring.xcodeproj/christopherjohnson.pbxuser index 341a8f7..6f09866 100755 --- a/plugins/MacAU/Monitoring/Monitoring.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacAU/Monitoring/Monitoring.xcodeproj/christopherjohnson.pbxuser @@ -3,6 +3,8 @@ 089C1669FE841209C02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; activeTarget = 8D01CCC60486CAD60068D4B7 /* Monitoring */; + breakpoints = ( + ); codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */; perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { @@ -49,34 +51,44 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 592088676; - PBXWorkspaceStateSaveDate = 592088676; + PBXPerProjectTemplateStateSaveDate = 593301102; + PBXWorkspaceStateSaveDate = 593301102; }; perUserProjectItems = { - 8B120FCF234A8E8700C990C9 /* PBXTextBookmark */ = 8B120FCF234A8E8700C990C9 /* PBXTextBookmark */; + 8B69E00A235D10FA00540A6C /* PBXTextBookmark */ = 8B69E00A235D10FA00540A6C /* PBXTextBookmark */; + 8B69E00B235D10FA00540A6C /* PBXTextBookmark */ = 8B69E00B235D10FA00540A6C /* PBXTextBookmark */; 8BB29AC5234A4F68003B3A8E /* PBXTextBookmark */ = 8BB29AC5234A4F68003B3A8E /* PBXTextBookmark */; - 8BB29AC7234A4F68003B3A8E /* PBXTextBookmark */ = 8BB29AC7234A4F68003B3A8E /* PBXTextBookmark */; }; sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */; userBuildSettings = { }; }; - 8B120FCF234A8E8700C990C9 /* PBXTextBookmark */ = { + 8B69E00A235D10FA00540A6C /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 8BC6025B073B072D006C4272 /* Monitoring.h */; name = "Monitoring.h: 91"; rLen = 0; rLoc = 4257; rType = 0; - vrLen = 284; + vrLen = 209; vrLoc = 5176; }; + 8B69E00B235D10FA00540A6C /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 8BA05A660720730100365D66 /* Monitoring.cpp */; + name = "Monitoring.cpp: 529"; + rLen = 0; + rLoc = 28619; + rType = 0; + vrLen = 369; + vrLoc = 69; + }; 8BA05A660720730100365D66 /* Monitoring.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {992, 9698}}"; - sepNavSelRange = "{31540, 0}"; - sepNavVisRange = "{30871, 2245}"; - sepNavWindowFrame = "{{7, 134}, {1007, 723}}"; + sepNavIntBoundsRect = "{{0, 0}, {803, 10036}}"; + sepNavSelRange = "{28619, 0}"; + sepNavVisRange = "{69, 369}"; + sepNavWindowFrame = "{{1, 60}, {1071, 818}}"; }; }; 8BA05A690720730100365D66 /* MonitoringVersion.h */ = { @@ -104,22 +116,12 @@ vrLen = 388; vrLoc = 3; }; - 8BB29AC7234A4F68003B3A8E /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 8BC6025B073B072D006C4272 /* Monitoring.h */; - name = "Monitoring.h: 91"; - rLen = 0; - rLoc = 4257; - rType = 0; - vrLen = 286; - vrLoc = 5176; - }; 8BC6025B073B072D006C4272 /* Monitoring.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {698, 2301}}"; - sepNavSelRange = "{4257, 0}"; - sepNavVisRange = "{5176, 284}"; - sepNavWindowFrame = "{{127, 28}, {991, 774}}"; + sepNavIntBoundsRect = "{{0, 0}, {944, 2249}}"; + sepNavSelRange = "{7152, 0}"; + sepNavVisRange = "{5237, 2030}"; + sepNavWindowFrame = "{{127, 57}, {991, 774}}"; }; }; 8BD3CCB8148830B20062E48C /* Source Control */ = { diff --git a/plugins/MacAU/Monitoring/Monitoring.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/Monitoring/Monitoring.xcodeproj/christopherjohnson.perspectivev3 index e6924d4..508e063 100755 --- a/plugins/MacAU/Monitoring/Monitoring.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacAU/Monitoring/Monitoring.xcodeproj/christopherjohnson.perspectivev3 @@ -340,7 +340,7 @@ PBXProjectModuleGUID 8B6A56BA231E69350074ECF1 PBXProjectModuleLabel - Monitoring.h + Monitoring.cpp PBXSplitModuleInNavigatorKey Split0 @@ -348,15 +348,15 @@ PBXProjectModuleGUID 8B6A56BB231E69350074ECF1 PBXProjectModuleLabel - Monitoring.h + Monitoring.cpp _historyCapacity 0 bookmark - 8B120FCF234A8E8700C990C9 + 8B69E00B235D10FA00540A6C history + 8B69E00A235D10FA00540A6C 8BB29AC5234A4F68003B3A8E - 8BB29AC7234A4F68003B3A8E SplitCount @@ -370,18 +370,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 117}} + {{0, 0}, {603, 86}} RubberWindowFrame 28 275 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 117pt + 86pt Proportion - 324pt + 355pt Tabs @@ -395,7 +395,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 297}} + {{10, 27}, {603, 328}} RubberWindowFrame 28 275 810 487 0 0 1440 878 @@ -451,7 +451,7 @@ GeometryConfiguration Frame - {{10, 27}, {603, 382}} + {{10, 27}, {603, 312}} Module PBXBuildResultsModule @@ -479,11 +479,11 @@ TableOfContents - 8B120FD0234A8E8700C990C9 + 8B69E00C235D10FA00540A6C 1CA23ED40692098700951B8B - 8B120FD1234A8E8700C990C9 + 8B69E00D235D10FA00540A6C 8B6A56BA231E69350074ECF1 - 8B120FD2234A8E8700C990C9 + 8B69E00E235D10FA00540A6C 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -520,7 +520,7 @@ Identifier perspective.debug IsVertical - 1 + Layout @@ -534,12 +534,12 @@ GeometryConfiguration Frame - {{0, 0}, {810, 0}} + {{0, 0}, {424, 270}} Module PBXDebugCLIModule Proportion - 0% + 270pt ContentConfiguration @@ -588,8 +588,6 @@ GeometryConfiguration - DebugConsoleDrawerSize - {100, 120} DebugConsoleVisible None DebugConsoleWindowFrame @@ -598,31 +596,53 @@ {{200, 200}, {500, 300}} Frame {{0, 7}, {810, 438}} + PBXDebugSessionStackFrameViewKey + + DebugVariablesTableConfiguration + + Name + 120 + Value + 85 + Summary + 185 + + Frame + {{395, 0}, {415, 213}} + Module PBXDebugSessionModule Proportion - 443pt + 438pt Name Debug ServiceClasses - XCModuleDock XCModuleDock PBXDebugCLIModule PBXDebugSessionModule - XCConsole + PBXDebugProcessAndThreadModule + PBXDebugProcessViewModule + PBXDebugThreadViewModule + PBXDebugStackFrameViewModule + PBXNavigatorGroup TableOfContents - 1CC8E6A5069209BD00BB180A - 1CC8E6A6069209BD00BB180A + 8B35730E235B982F00CD33C1 1CCC7628064C1048000F2A68 1CCC7629064C1048000F2A68 - 1CC8E6A7069209BD00BB180A + 8B35730F235B982F00CD33C1 + 8B357310235B982F00CD33C1 + 8B357311235B982F00CD33C1 + 8B357312235B982F00CD33C1 + 8B357313235B982F00CD33C1 + ToolbarConfigUserDefaultsMinorVersion + 2 ToolbarConfiguration xcode.toolbar.config.debugV3 @@ -636,7 +656,7 @@ StatusbarIsVisible TimeStamp - 592088711.96861303 + 593301754.691908 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -653,7 +673,6 @@ 5 WindowOrderList - 8B120FD3234A8E8700C990C9 /Users/christopherjohnson/Desktop/Plugins/MacAU/Monitoring/Monitoring.xcodeproj WindowString diff --git a/plugins/MacVST/Monitoring/Monitoring.xcodeproj/christopherjohnson.pbxuser b/plugins/MacVST/Monitoring/Monitoring.xcodeproj/christopherjohnson.pbxuser index bcff55a..e73fde2 100755 --- a/plugins/MacVST/Monitoring/Monitoring.xcodeproj/christopherjohnson.pbxuser +++ b/plugins/MacVST/Monitoring/Monitoring.xcodeproj/christopherjohnson.pbxuser @@ -49,12 +49,14 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 592088736; - PBXWorkspaceStateSaveDate = 592088736; + PBXPerProjectTemplateStateSaveDate = 593304926; + PBXWorkspaceStateSaveDate = 593304926; }; perUserProjectItems = { - 8B120FF1234A8EEE00C990C9 /* PBXTextBookmark */ = 8B120FF1234A8EEE00C990C9 /* PBXTextBookmark */; - 8BB29AD0234A4F71003B3A8E /* PBXTextBookmark */ = 8BB29AD0234A4F71003B3A8E /* PBXTextBookmark */; + 8B25952F235D1D620051EAA4 /* PBXBookmark */ = 8B25952F235D1D620051EAA4 /* PBXBookmark */; + 8B259532235D1D780051EAA4 /* PBXTextBookmark */ = 8B259532235D1D780051EAA4 /* PBXTextBookmark */; + 8B259544235D1D780051EAA4 /* PBXTextBookmark */ = 8B259544235D1D780051EAA4 /* PBXTextBookmark */; + 8B259545235D1D780051EAA4 /* PBXTextBookmark */ = 8B259545235D1D780051EAA4 /* PBXTextBookmark */; }; sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */; userBuildSettings = { @@ -86,10 +88,10 @@ }; 24D8286F09A914000093AEF8 /* MonitoringProc.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {554, 12792}}"; - sepNavSelRange = "{46745, 0}"; - sepNavVisRange = "{0, 0}"; - sepNavWindowFrame = "{{518, 57}, {895, 821}}"; + sepNavIntBoundsRect = "{{0, 0}, {908, 13234}}"; + sepNavSelRange = "{47910, 0}"; + sepNavVisRange = "{44, 187}"; + sepNavWindowFrame = "{{539, 57}, {895, 821}}"; }; }; 8B02375E1D42B1C400E1E8C8 /* Source Control */ = { @@ -106,25 +108,39 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; - 8B120FF1234A8EEE00C990C9 /* PBXTextBookmark */ = { + 8B25952F235D1D620051EAA4 /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 24D8286F09A914000093AEF8 /* MonitoringProc.cpp */; + }; + 8B259532235D1D780051EAA4 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 24D8286F09A914000093AEF8 /* MonitoringProc.cpp */; + name = "MonitoringProc.cpp: 801"; + rLen = 0; + rLoc = 47910; + rType = 0; + vrLen = 187; + vrLoc = 44; + }; + 8B259544235D1D780051EAA4 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* MonitoringProc.cpp */; - name = "MonitoringProc.cpp: 783"; + name = "MonitoringProc.cpp: 801"; rLen = 0; - rLoc = 46745; + rLoc = 47910; rType = 0; - vrLen = 0; - vrLoc = 0; + vrLen = 187; + vrLoc = 44; }; - 8BB29AD0234A4F71003B3A8E /* PBXTextBookmark */ = { + 8B259545235D1D780051EAA4 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 24D8286F09A914000093AEF8 /* MonitoringProc.cpp */; - name = "MonitoringProc.cpp: 782"; + name = "MonitoringProc.cpp: 801"; rLen = 0; - rLoc = 46745; + rLoc = 47910; rType = 0; - vrLen = 25; - vrLoc = 27860; + vrLen = 3014; + vrLoc = 49111; }; 8D01CCC60486CAD60068D4B7 /* Monitoring */ = { activeExec = 0; diff --git a/plugins/MacVST/Monitoring/Monitoring.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacVST/Monitoring/Monitoring.xcodeproj/christopherjohnson.perspectivev3 index e9adff3..5fc07fb 100755 --- a/plugins/MacVST/Monitoring/Monitoring.xcodeproj/christopherjohnson.perspectivev3 +++ b/plugins/MacVST/Monitoring/Monitoring.xcodeproj/christopherjohnson.perspectivev3 @@ -222,7 +222,48 @@ OpenEditors - + + + Content + + PBXProjectModuleGUID + 8B259537235D1D780051EAA4 + PBXProjectModuleLabel + MonitoringProc.cpp + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 8B259538235D1D780051EAA4 + PBXProjectModuleLabel + MonitoringProc.cpp + _historyCapacity + 0 + bookmark + 8B259545235D1D780051EAA4 + history + + 8B25952F235D1D620051EAA4 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {895, 724}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 539 113 895 765 0 0 1440 878 + + + PerspectiveWidths 810 @@ -323,7 +364,7 @@ 185 RubberWindowFrame - 246 279 810 487 0 0 1440 878 + 476 276 810 487 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -351,10 +392,10 @@ _historyCapacity 0 bookmark - 8B120FF1234A8EEE00C990C9 + 8B259544235D1D780051EAA4 history - 8BB29AD0234A4F71003B3A8E + 8B259532235D1D780051EAA4 SplitCount @@ -368,18 +409,18 @@ GeometryConfiguration Frame - {{0, 0}, {603, 32}} + {{0, 0}, {603, 117}} RubberWindowFrame - 246 279 810 487 0 0 1440 878 + 476 276 810 487 0 0 1440 878 Module PBXNavigatorGroup Proportion - 32pt + 117pt Proportion - 409pt + 324pt Tabs @@ -393,9 +434,9 @@ GeometryConfiguration Frame - {{10, 27}, {603, 382}} + {{10, 27}, {603, 297}} RubberWindowFrame - 246 279 810 487 0 0 1440 878 + 476 276 810 487 0 0 1440 878 Module XCDetailModule @@ -477,11 +518,11 @@ TableOfContents - 8B120FF2234A8EEE00C990C9 + 8B259534235D1D780051EAA4 1CA23ED40692098700951B8B - 8B120FF3234A8EEE00C990C9 + 8B259535235D1D780051EAA4 8B0237581D42B1C400E1E8C8 - 8B120FF4234A8EEE00C990C9 + 8B259536235D1D780051EAA4 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -634,7 +675,7 @@ StatusbarIsVisible TimeStamp - 592088814.93142998 + 593304952.09331 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode @@ -651,11 +692,11 @@ 5 WindowOrderList - 8B120FF5234A8EEE00C990C9 /Users/christopherjohnson/Desktop/Plugins/MacVST/Monitoring/Monitoring.xcodeproj + 8B259537235D1D780051EAA4 WindowString - 246 279 810 487 0 0 1440 878 + 476 276 810 487 0 0 1440 878 WindowToolsV3 diff --git a/plugins/MacVST/Monitoring/source/MonitoringProc.cpp b/plugins/MacVST/Monitoring/source/MonitoringProc.cpp index db51380..ae46dca 100755 --- a/plugins/MacVST/Monitoring/source/MonitoringProc.cpp +++ b/plugins/MacVST/Monitoring/source/MonitoringProc.cpp @@ -320,24 +320,37 @@ void Monitoring::processReplacing(float **inputs, float **outputs, VstInt32 samp case 13: case 14: case 15: + if (processing == 12) {inputSampleL *= 0.855; inputSampleR *= 0.855;} + if (processing == 13) {inputSampleL *= 0.748; inputSampleR *= 0.748;} + if (processing == 14) {inputSampleL *= 0.713; inputSampleR *= 0.713;} + if (processing == 15) {inputSampleL *= 0.680; inputSampleR *= 0.680;} + //we do a volume compensation immediately to gain stage stuff cleanly inputSampleL = sin(inputSampleL); inputSampleR = sin(inputSampleR); long double drySampleL; drySampleL = inputSampleL; long double drySampleR; drySampleR = inputSampleR; //everything runs 'inside' Console + long double bass; bass = (processing * processing * 0.00001) / overallscale; + //we are using the iir filters from out of SubsOnly + + mid = inputSampleL + inputSampleR; side = inputSampleL - inputSampleR; + iirSampleAL = (iirSampleAL * (1.0 - (bass*0.618))) + (side * bass * 0.618); side = side - iirSampleAL; + inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; + //bass narrowing filter allpasstemp = ax - 1; if (allpasstemp < 0 || allpasstemp > am) allpasstemp = am; inputSampleL -= aL[allpasstemp]*0.5; aL[ax] = inputSampleL; inputSampleL *= 0.5; inputSampleR -= aR[allpasstemp]*0.5; aR[ax] = inputSampleR; inputSampleR *= 0.5; + ax--; if (ax < 0 || ax > am) {ax = am;} - inputSampleL += (aL[ax]); - inputSampleR += (aR[ax]); - //a single Midiverb-style allpass + inputSampleL += (aL[ax])*0.5; inputSampleR += (aR[ax])*0.5; + if (ax == am) {inputSampleL += (aL[0])*0.5; inputSampleR += (aR[0])*0.5;} + else {inputSampleL += (aL[ax+1])*0.5; inputSampleR += (aR[ax+1])*0.5;} + //a darkened Midiverb-style allpass if (processing == 12) {inputSampleL *= 0.125; inputSampleR *= 0.125;} if (processing == 13) {inputSampleL *= 0.25; inputSampleR *= 0.25;} - if (processing == 14) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - if (processing == 15) {drySampleL *= 0.5; drySampleR *= 0.5;} - if (processing == 15) {inputSampleL *= 0.5; inputSampleR *= 0.5;} + if (processing == 14) {inputSampleL *= 0.30; inputSampleR *= 0.30;} + if (processing == 15) {inputSampleL *= 0.35; inputSampleR *= 0.35;} //Cans A suppresses the crossfeed more, Cans B makes it louder drySampleL += inputSampleR; @@ -346,23 +359,28 @@ void Monitoring::processReplacing(float **inputs, float **outputs, VstInt32 samp allpasstemp = dx - 1; if (allpasstemp < 0 || allpasstemp > dm) allpasstemp = dm; inputSampleL -= dL[allpasstemp]*0.5; dL[dx] = inputSampleL; inputSampleL *= 0.5; inputSampleR -= dR[allpasstemp]*0.5; dR[dx] = inputSampleR; inputSampleR *= 0.5; + dx--; if (dx < 0 || dx > dm) {dx = dm;} - inputSampleL += (dL[dx]); - inputSampleR += (dR[dx]); - //a single Midiverb-style allpass, which is stretching the previous one even more + inputSampleL += (dL[dx])*0.5; inputSampleR += (dR[dx])*0.5; + if (dx == dm) {inputSampleL += (dL[0])*0.5; inputSampleR += (dR[0])*0.5;} + else {inputSampleL += (dL[dx+1])*0.5; inputSampleR += (dR[dx+1])*0.5;} + //a darkened Midiverb-style allpass, which is stretching the previous one even more - if (processing == 12) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - if (processing == 13) {inputSampleL *= 0.25; inputSampleR *= 0.25;} - if (processing == 14) {inputSampleL *= 0.125; inputSampleR *= 0.125;} - if (processing == 15) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - //Cans A already had crossfeeds down, bloom is louder. Cans B sits on bloom more + inputSampleL *= 0.25; inputSampleR *= 0.25; + //for all versions of Cans the second level of bloom is this far down + //and, remains on the opposite speaker rather than crossing again to the original side - drySampleL += inputSampleL; - drySampleR += inputSampleR; //add the crossfeed and very faint extra verbyness + drySampleL += inputSampleR; + drySampleR += inputSampleL; //add the crossfeed and very faint extra verbyness inputSampleL = drySampleL; inputSampleR = drySampleR; //and output our can-opened headphone feed + mid = inputSampleL + inputSampleR; side = inputSampleL - inputSampleR; + iirSampleAR = (iirSampleAR * (1.0 - bass)) + (side * bass); side = side - iirSampleAR; + inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; + //bass narrowing filter + if (inputSampleL > 1.0) inputSampleL = 1.0; if (inputSampleL < -1.0) inputSampleL = -1.0; inputSampleL = asin(inputSampleL); if (inputSampleR > 1.0) inputSampleR = 1.0; if (inputSampleR < -1.0) inputSampleR = -1.0; inputSampleR = asin(inputSampleR); //ConsoleBuss processing @@ -804,24 +822,37 @@ void Monitoring::processDoubleReplacing(double **inputs, double **outputs, VstIn case 13: case 14: case 15: + if (processing == 12) {inputSampleL *= 0.855; inputSampleR *= 0.855;} + if (processing == 13) {inputSampleL *= 0.748; inputSampleR *= 0.748;} + if (processing == 14) {inputSampleL *= 0.713; inputSampleR *= 0.713;} + if (processing == 15) {inputSampleL *= 0.680; inputSampleR *= 0.680;} + //we do a volume compensation immediately to gain stage stuff cleanly inputSampleL = sin(inputSampleL); inputSampleR = sin(inputSampleR); long double drySampleL; drySampleL = inputSampleL; long double drySampleR; drySampleR = inputSampleR; //everything runs 'inside' Console + long double bass; bass = (processing * processing * 0.00001) / overallscale; + //we are using the iir filters from out of SubsOnly + + mid = inputSampleL + inputSampleR; side = inputSampleL - inputSampleR; + iirSampleAL = (iirSampleAL * (1.0 - (bass*0.618))) + (side * bass * 0.618); side = side - iirSampleAL; + inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; + //bass narrowing filter allpasstemp = ax - 1; if (allpasstemp < 0 || allpasstemp > am) allpasstemp = am; inputSampleL -= aL[allpasstemp]*0.5; aL[ax] = inputSampleL; inputSampleL *= 0.5; inputSampleR -= aR[allpasstemp]*0.5; aR[ax] = inputSampleR; inputSampleR *= 0.5; + ax--; if (ax < 0 || ax > am) {ax = am;} - inputSampleL += (aL[ax]); - inputSampleR += (aR[ax]); - //a single Midiverb-style allpass + inputSampleL += (aL[ax])*0.5; inputSampleR += (aR[ax])*0.5; + if (ax == am) {inputSampleL += (aL[0])*0.5; inputSampleR += (aR[0])*0.5;} + else {inputSampleL += (aL[ax+1])*0.5; inputSampleR += (aR[ax+1])*0.5;} + //a darkened Midiverb-style allpass if (processing == 12) {inputSampleL *= 0.125; inputSampleR *= 0.125;} if (processing == 13) {inputSampleL *= 0.25; inputSampleR *= 0.25;} - if (processing == 14) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - if (processing == 15) {drySampleL *= 0.5; drySampleR *= 0.5;} - if (processing == 15) {inputSampleL *= 0.5; inputSampleR *= 0.5;} + if (processing == 14) {inputSampleL *= 0.30; inputSampleR *= 0.30;} + if (processing == 15) {inputSampleL *= 0.35; inputSampleR *= 0.35;} //Cans A suppresses the crossfeed more, Cans B makes it louder drySampleL += inputSampleR; @@ -830,27 +861,32 @@ void Monitoring::processDoubleReplacing(double **inputs, double **outputs, VstIn allpasstemp = dx - 1; if (allpasstemp < 0 || allpasstemp > dm) allpasstemp = dm; inputSampleL -= dL[allpasstemp]*0.5; dL[dx] = inputSampleL; inputSampleL *= 0.5; inputSampleR -= dR[allpasstemp]*0.5; dR[dx] = inputSampleR; inputSampleR *= 0.5; + dx--; if (dx < 0 || dx > dm) {dx = dm;} - inputSampleL += (dL[dx]); - inputSampleR += (dR[dx]); - //a single Midiverb-style allpass, which is stretching the previous one even more + inputSampleL += (dL[dx])*0.5; inputSampleR += (dR[dx])*0.5; + if (dx == dm) {inputSampleL += (dL[0])*0.5; inputSampleR += (dR[0])*0.5;} + else {inputSampleL += (dL[dx+1])*0.5; inputSampleR += (dR[dx+1])*0.5;} + //a darkened Midiverb-style allpass, which is stretching the previous one even more - if (processing == 12) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - if (processing == 13) {inputSampleL *= 0.25; inputSampleR *= 0.25;} - if (processing == 14) {inputSampleL *= 0.125; inputSampleR *= 0.125;} - if (processing == 15) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - //Cans A already had crossfeeds down, bloom is louder. Cans B sits on bloom more + inputSampleL *= 0.25; inputSampleR *= 0.25; + //for all versions of Cans the second level of bloom is this far down + //and, remains on the opposite speaker rather than crossing again to the original side - drySampleL += inputSampleL; - drySampleR += inputSampleR; //add the crossfeed and very faint extra verbyness + drySampleL += inputSampleR; + drySampleR += inputSampleL; //add the crossfeed and very faint extra verbyness inputSampleL = drySampleL; inputSampleR = drySampleR; //and output our can-opened headphone feed + mid = inputSampleL + inputSampleR; side = inputSampleL - inputSampleR; + iirSampleAR = (iirSampleAR * (1.0 - bass)) + (side * bass); side = side - iirSampleAR; + inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; + //bass narrowing filter + if (inputSampleL > 1.0) inputSampleL = 1.0; if (inputSampleL < -1.0) inputSampleL = -1.0; inputSampleL = asin(inputSampleL); if (inputSampleR > 1.0) inputSampleR = 1.0; if (inputSampleR < -1.0) inputSampleR = -1.0; inputSampleR = asin(inputSampleR); //ConsoleBuss processing - break; + break; } diff --git a/plugins/WinVST/Monitoring/.vs/VSTProject/v14/.suo b/plugins/WinVST/Monitoring/.vs/VSTProject/v14/.suo index 6d8080e..5ceb360 100755 Binary files a/plugins/WinVST/Monitoring/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Monitoring/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/Monitoring/MonitoringProc.cpp b/plugins/WinVST/Monitoring/MonitoringProc.cpp index db51380..ae46dca 100755 --- a/plugins/WinVST/Monitoring/MonitoringProc.cpp +++ b/plugins/WinVST/Monitoring/MonitoringProc.cpp @@ -320,24 +320,37 @@ void Monitoring::processReplacing(float **inputs, float **outputs, VstInt32 samp case 13: case 14: case 15: + if (processing == 12) {inputSampleL *= 0.855; inputSampleR *= 0.855;} + if (processing == 13) {inputSampleL *= 0.748; inputSampleR *= 0.748;} + if (processing == 14) {inputSampleL *= 0.713; inputSampleR *= 0.713;} + if (processing == 15) {inputSampleL *= 0.680; inputSampleR *= 0.680;} + //we do a volume compensation immediately to gain stage stuff cleanly inputSampleL = sin(inputSampleL); inputSampleR = sin(inputSampleR); long double drySampleL; drySampleL = inputSampleL; long double drySampleR; drySampleR = inputSampleR; //everything runs 'inside' Console + long double bass; bass = (processing * processing * 0.00001) / overallscale; + //we are using the iir filters from out of SubsOnly + + mid = inputSampleL + inputSampleR; side = inputSampleL - inputSampleR; + iirSampleAL = (iirSampleAL * (1.0 - (bass*0.618))) + (side * bass * 0.618); side = side - iirSampleAL; + inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; + //bass narrowing filter allpasstemp = ax - 1; if (allpasstemp < 0 || allpasstemp > am) allpasstemp = am; inputSampleL -= aL[allpasstemp]*0.5; aL[ax] = inputSampleL; inputSampleL *= 0.5; inputSampleR -= aR[allpasstemp]*0.5; aR[ax] = inputSampleR; inputSampleR *= 0.5; + ax--; if (ax < 0 || ax > am) {ax = am;} - inputSampleL += (aL[ax]); - inputSampleR += (aR[ax]); - //a single Midiverb-style allpass + inputSampleL += (aL[ax])*0.5; inputSampleR += (aR[ax])*0.5; + if (ax == am) {inputSampleL += (aL[0])*0.5; inputSampleR += (aR[0])*0.5;} + else {inputSampleL += (aL[ax+1])*0.5; inputSampleR += (aR[ax+1])*0.5;} + //a darkened Midiverb-style allpass if (processing == 12) {inputSampleL *= 0.125; inputSampleR *= 0.125;} if (processing == 13) {inputSampleL *= 0.25; inputSampleR *= 0.25;} - if (processing == 14) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - if (processing == 15) {drySampleL *= 0.5; drySampleR *= 0.5;} - if (processing == 15) {inputSampleL *= 0.5; inputSampleR *= 0.5;} + if (processing == 14) {inputSampleL *= 0.30; inputSampleR *= 0.30;} + if (processing == 15) {inputSampleL *= 0.35; inputSampleR *= 0.35;} //Cans A suppresses the crossfeed more, Cans B makes it louder drySampleL += inputSampleR; @@ -346,23 +359,28 @@ void Monitoring::processReplacing(float **inputs, float **outputs, VstInt32 samp allpasstemp = dx - 1; if (allpasstemp < 0 || allpasstemp > dm) allpasstemp = dm; inputSampleL -= dL[allpasstemp]*0.5; dL[dx] = inputSampleL; inputSampleL *= 0.5; inputSampleR -= dR[allpasstemp]*0.5; dR[dx] = inputSampleR; inputSampleR *= 0.5; + dx--; if (dx < 0 || dx > dm) {dx = dm;} - inputSampleL += (dL[dx]); - inputSampleR += (dR[dx]); - //a single Midiverb-style allpass, which is stretching the previous one even more + inputSampleL += (dL[dx])*0.5; inputSampleR += (dR[dx])*0.5; + if (dx == dm) {inputSampleL += (dL[0])*0.5; inputSampleR += (dR[0])*0.5;} + else {inputSampleL += (dL[dx+1])*0.5; inputSampleR += (dR[dx+1])*0.5;} + //a darkened Midiverb-style allpass, which is stretching the previous one even more - if (processing == 12) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - if (processing == 13) {inputSampleL *= 0.25; inputSampleR *= 0.25;} - if (processing == 14) {inputSampleL *= 0.125; inputSampleR *= 0.125;} - if (processing == 15) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - //Cans A already had crossfeeds down, bloom is louder. Cans B sits on bloom more + inputSampleL *= 0.25; inputSampleR *= 0.25; + //for all versions of Cans the second level of bloom is this far down + //and, remains on the opposite speaker rather than crossing again to the original side - drySampleL += inputSampleL; - drySampleR += inputSampleR; //add the crossfeed and very faint extra verbyness + drySampleL += inputSampleR; + drySampleR += inputSampleL; //add the crossfeed and very faint extra verbyness inputSampleL = drySampleL; inputSampleR = drySampleR; //and output our can-opened headphone feed + mid = inputSampleL + inputSampleR; side = inputSampleL - inputSampleR; + iirSampleAR = (iirSampleAR * (1.0 - bass)) + (side * bass); side = side - iirSampleAR; + inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; + //bass narrowing filter + if (inputSampleL > 1.0) inputSampleL = 1.0; if (inputSampleL < -1.0) inputSampleL = -1.0; inputSampleL = asin(inputSampleL); if (inputSampleR > 1.0) inputSampleR = 1.0; if (inputSampleR < -1.0) inputSampleR = -1.0; inputSampleR = asin(inputSampleR); //ConsoleBuss processing @@ -804,24 +822,37 @@ void Monitoring::processDoubleReplacing(double **inputs, double **outputs, VstIn case 13: case 14: case 15: + if (processing == 12) {inputSampleL *= 0.855; inputSampleR *= 0.855;} + if (processing == 13) {inputSampleL *= 0.748; inputSampleR *= 0.748;} + if (processing == 14) {inputSampleL *= 0.713; inputSampleR *= 0.713;} + if (processing == 15) {inputSampleL *= 0.680; inputSampleR *= 0.680;} + //we do a volume compensation immediately to gain stage stuff cleanly inputSampleL = sin(inputSampleL); inputSampleR = sin(inputSampleR); long double drySampleL; drySampleL = inputSampleL; long double drySampleR; drySampleR = inputSampleR; //everything runs 'inside' Console + long double bass; bass = (processing * processing * 0.00001) / overallscale; + //we are using the iir filters from out of SubsOnly + + mid = inputSampleL + inputSampleR; side = inputSampleL - inputSampleR; + iirSampleAL = (iirSampleAL * (1.0 - (bass*0.618))) + (side * bass * 0.618); side = side - iirSampleAL; + inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; + //bass narrowing filter allpasstemp = ax - 1; if (allpasstemp < 0 || allpasstemp > am) allpasstemp = am; inputSampleL -= aL[allpasstemp]*0.5; aL[ax] = inputSampleL; inputSampleL *= 0.5; inputSampleR -= aR[allpasstemp]*0.5; aR[ax] = inputSampleR; inputSampleR *= 0.5; + ax--; if (ax < 0 || ax > am) {ax = am;} - inputSampleL += (aL[ax]); - inputSampleR += (aR[ax]); - //a single Midiverb-style allpass + inputSampleL += (aL[ax])*0.5; inputSampleR += (aR[ax])*0.5; + if (ax == am) {inputSampleL += (aL[0])*0.5; inputSampleR += (aR[0])*0.5;} + else {inputSampleL += (aL[ax+1])*0.5; inputSampleR += (aR[ax+1])*0.5;} + //a darkened Midiverb-style allpass if (processing == 12) {inputSampleL *= 0.125; inputSampleR *= 0.125;} if (processing == 13) {inputSampleL *= 0.25; inputSampleR *= 0.25;} - if (processing == 14) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - if (processing == 15) {drySampleL *= 0.5; drySampleR *= 0.5;} - if (processing == 15) {inputSampleL *= 0.5; inputSampleR *= 0.5;} + if (processing == 14) {inputSampleL *= 0.30; inputSampleR *= 0.30;} + if (processing == 15) {inputSampleL *= 0.35; inputSampleR *= 0.35;} //Cans A suppresses the crossfeed more, Cans B makes it louder drySampleL += inputSampleR; @@ -830,27 +861,32 @@ void Monitoring::processDoubleReplacing(double **inputs, double **outputs, VstIn allpasstemp = dx - 1; if (allpasstemp < 0 || allpasstemp > dm) allpasstemp = dm; inputSampleL -= dL[allpasstemp]*0.5; dL[dx] = inputSampleL; inputSampleL *= 0.5; inputSampleR -= dR[allpasstemp]*0.5; dR[dx] = inputSampleR; inputSampleR *= 0.5; + dx--; if (dx < 0 || dx > dm) {dx = dm;} - inputSampleL += (dL[dx]); - inputSampleR += (dR[dx]); - //a single Midiverb-style allpass, which is stretching the previous one even more + inputSampleL += (dL[dx])*0.5; inputSampleR += (dR[dx])*0.5; + if (dx == dm) {inputSampleL += (dL[0])*0.5; inputSampleR += (dR[0])*0.5;} + else {inputSampleL += (dL[dx+1])*0.5; inputSampleR += (dR[dx+1])*0.5;} + //a darkened Midiverb-style allpass, which is stretching the previous one even more - if (processing == 12) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - if (processing == 13) {inputSampleL *= 0.25; inputSampleR *= 0.25;} - if (processing == 14) {inputSampleL *= 0.125; inputSampleR *= 0.125;} - if (processing == 15) {inputSampleL *= 0.5; inputSampleR *= 0.5;} - //Cans A already had crossfeeds down, bloom is louder. Cans B sits on bloom more + inputSampleL *= 0.25; inputSampleR *= 0.25; + //for all versions of Cans the second level of bloom is this far down + //and, remains on the opposite speaker rather than crossing again to the original side - drySampleL += inputSampleL; - drySampleR += inputSampleR; //add the crossfeed and very faint extra verbyness + drySampleL += inputSampleR; + drySampleR += inputSampleL; //add the crossfeed and very faint extra verbyness inputSampleL = drySampleL; inputSampleR = drySampleR; //and output our can-opened headphone feed + mid = inputSampleL + inputSampleR; side = inputSampleL - inputSampleR; + iirSampleAR = (iirSampleAR * (1.0 - bass)) + (side * bass); side = side - iirSampleAR; + inputSampleL = (mid+side)/2.0; inputSampleR = (mid-side)/2.0; + //bass narrowing filter + if (inputSampleL > 1.0) inputSampleL = 1.0; if (inputSampleL < -1.0) inputSampleL = -1.0; inputSampleL = asin(inputSampleL); if (inputSampleR > 1.0) inputSampleR = 1.0; if (inputSampleR < -1.0) inputSampleR = -1.0; inputSampleR = asin(inputSampleR); //ConsoleBuss processing - break; + break; } -- cgit v1.2.3