aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Johnson <jinx6568@sover.net>2019-10-20 20:00:40 -0400
committerChris Johnson <jinx6568@sover.net>2019-10-20 20:00:40 -0400
commit06b19d09efd9c7ee5afb264475eba042ad6790d4 (patch)
treeefbc2c490fbd7feefd8cfce72f3ca0eab4b28a8b
parent1340c990ffe6e09462eb6edba892cd06d0e3dc3c (diff)
downloadairwindows-lv2-port-06b19d09efd9c7ee5afb264475eba042ad6790d4.tar.gz
airwindows-lv2-port-06b19d09efd9c7ee5afb264475eba042ad6790d4.tar.bz2
airwindows-lv2-port-06b19d09efd9c7ee5afb264475eba042ad6790d4.zip
Monitoring Threedux
-rwxr-xr-xplugins/LinuxVST/src/Monitoring/MonitoringProc.cpp102
-rwxr-xr-xplugins/MacAU/Monitoring/Monitoring.cpp56
-rwxr-xr-xplugins/MacAU/Monitoring/Monitoring.xcodeproj/christopherjohnson.pbxuser50
-rwxr-xr-xplugins/MacAU/Monitoring/Monitoring.xcodeproj/christopherjohnson.perspectivev369
-rwxr-xr-xplugins/MacVST/Monitoring/Monitoring.xcodeproj/christopherjohnson.pbxuser52
-rwxr-xr-xplugins/MacVST/Monitoring/Monitoring.xcodeproj/christopherjohnson.perspectivev373
-rwxr-xr-xplugins/MacVST/Monitoring/source/MonitoringProc.cpp102
-rwxr-xr-xplugins/WinVST/Monitoring/.vs/VSTProject/v14/.suobin22528 -> 23040 bytes
-rwxr-xr-xplugins/WinVST/Monitoring/MonitoringProc.cpp102
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 @@
<key>PBXProjectModuleGUID</key>
<string>8B6A56BA231E69350074ECF1</string>
<key>PBXProjectModuleLabel</key>
- <string>Monitoring.h</string>
+ <string>Monitoring.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@@ -348,15 +348,15 @@
<key>PBXProjectModuleGUID</key>
<string>8B6A56BB231E69350074ECF1</string>
<key>PBXProjectModuleLabel</key>
- <string>Monitoring.h</string>
+ <string>Monitoring.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B120FCF234A8E8700C990C9</string>
+ <string>8B69E00B235D10FA00540A6C</string>
<key>history</key>
<array>
+ <string>8B69E00A235D10FA00540A6C</string>
<string>8BB29AC5234A4F68003B3A8E</string>
- <string>8BB29AC7234A4F68003B3A8E</string>
</array>
</dict>
<key>SplitCount</key>
@@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 117}}</string>
+ <string>{{0, 0}, {603, 86}}</string>
<key>RubberWindowFrame</key>
<string>28 275 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>117pt</string>
+ <string>86pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>324pt</string>
+ <string>355pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -395,7 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 297}}</string>
+ <string>{{10, 27}, {603, 328}}</string>
<key>RubberWindowFrame</key>
<string>28 275 810 487 0 0 1440 878 </string>
</dict>
@@ -451,7 +451,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 382}}</string>
+ <string>{{10, 27}, {603, 312}}</string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B120FD0234A8E8700C990C9</string>
+ <string>8B69E00C235D10FA00540A6C</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B120FD1234A8E8700C990C9</string>
+ <string>8B69E00D235D10FA00540A6C</string>
<string>8B6A56BA231E69350074ECF1</string>
- <string>8B120FD2234A8E8700C990C9</string>
+ <string>8B69E00E235D10FA00540A6C</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -520,7 +520,7 @@
<key>Identifier</key>
<string>perspective.debug</string>
<key>IsVertical</key>
- <integer>1</integer>
+ <true/>
<key>Layout</key>
<array>
<dict>
@@ -534,12 +534,12 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {810, 0}}</string>
+ <string>{{0, 0}, {424, 270}}</string>
</dict>
<key>Module</key>
<string>PBXDebugCLIModule</string>
<key>Proportion</key>
- <string>0%</string>
+ <string>270pt</string>
</dict>
<dict>
<key>ContentConfiguration</key>
@@ -588,8 +588,6 @@
</dict>
<key>GeometryConfiguration</key>
<dict>
- <key>DebugConsoleDrawerSize</key>
- <string>{100, 120}</string>
<key>DebugConsoleVisible</key>
<string>None</string>
<key>DebugConsoleWindowFrame</key>
@@ -598,11 +596,25 @@
<string>{{200, 200}, {500, 300}}</string>
<key>Frame</key>
<string>{{0, 7}, {810, 438}}</string>
+ <key>PBXDebugSessionStackFrameViewKey</key>
+ <dict>
+ <key>DebugVariablesTableConfiguration</key>
+ <array>
+ <string>Name</string>
+ <real>120</real>
+ <string>Value</string>
+ <real>85</real>
+ <string>Summary</string>
+ <real>185</real>
+ </array>
+ <key>Frame</key>
+ <string>{{395, 0}, {415, 213}}</string>
+ </dict>
</dict>
<key>Module</key>
<string>PBXDebugSessionModule</string>
<key>Proportion</key>
- <string>443pt</string>
+ <string>438pt</string>
</dict>
</array>
<key>Name</key>
@@ -610,19 +622,27 @@
<key>ServiceClasses</key>
<array>
<string>XCModuleDock</string>
- <string>XCModuleDock</string>
<string>PBXDebugCLIModule</string>
<string>PBXDebugSessionModule</string>
- <string>XCConsole</string>
+ <string>PBXDebugProcessAndThreadModule</string>
+ <string>PBXDebugProcessViewModule</string>
+ <string>PBXDebugThreadViewModule</string>
+ <string>PBXDebugStackFrameViewModule</string>
+ <string>PBXNavigatorGroup</string>
</array>
<key>TableOfContents</key>
<array>
- <string>1CC8E6A5069209BD00BB180A</string>
- <string>1CC8E6A6069209BD00BB180A</string>
+ <string>8B35730E235B982F00CD33C1</string>
<string>1CCC7628064C1048000F2A68</string>
<string>1CCC7629064C1048000F2A68</string>
- <string>1CC8E6A7069209BD00BB180A</string>
+ <string>8B35730F235B982F00CD33C1</string>
+ <string>8B357310235B982F00CD33C1</string>
+ <string>8B357311235B982F00CD33C1</string>
+ <string>8B357312235B982F00CD33C1</string>
+ <string>8B357313235B982F00CD33C1</string>
</array>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.debugV3</string>
</dict>
@@ -636,7 +656,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>592088711.96861303</real>
+ <real>593301754.691908</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -653,7 +673,6 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B120FD3234A8E8700C990C9</string>
<string>/Users/christopherjohnson/Desktop/Plugins/MacAU/Monitoring/Monitoring.xcodeproj</string>
</array>
<key>WindowString</key>
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 @@
</dict>
</array>
<key>OpenEditors</key>
- <array/>
+ <array>
+ <dict>
+ <key>Content</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8B259537235D1D780051EAA4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>MonitoringProc.cpp</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8B259538235D1D780051EAA4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>MonitoringProc.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B259545235D1D780051EAA4</string>
+ <key>history</key>
+ <array>
+ <string>8B25952F235D1D620051EAA4</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>Geometry</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 20}, {895, 724}}</string>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <false/>
+ <key>RubberWindowFrame</key>
+ <string>539 113 895 765 0 0 1440 878 </string>
+ </dict>
+ </dict>
+ </array>
<key>PerspectiveWidths</key>
<array>
<integer>810</integer>
@@ -323,7 +364,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
- <string>246 279 810 487 0 0 1440 878 </string>
+ <string>476 276 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@@ -351,10 +392,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>8B120FF1234A8EEE00C990C9</string>
+ <string>8B259544235D1D780051EAA4</string>
<key>history</key>
<array>
- <string>8BB29AD0234A4F71003B3A8E</string>
+ <string>8B259532235D1D780051EAA4</string>
</array>
</dict>
<key>SplitCount</key>
@@ -368,18 +409,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {603, 32}}</string>
+ <string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
- <string>246 279 810 487 0 0 1440 878 </string>
+ <string>476 276 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
- <string>32pt</string>
+ <string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
- <string>409pt</string>
+ <string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@@ -393,9 +434,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{10, 27}, {603, 382}}</string>
+ <string>{{10, 27}, {603, 297}}</string>
<key>RubberWindowFrame</key>
- <string>246 279 810 487 0 0 1440 878 </string>
+ <string>476 276 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@@ -477,11 +518,11 @@
</array>
<key>TableOfContents</key>
<array>
- <string>8B120FF2234A8EEE00C990C9</string>
+ <string>8B259534235D1D780051EAA4</string>
<string>1CA23ED40692098700951B8B</string>
- <string>8B120FF3234A8EEE00C990C9</string>
+ <string>8B259535235D1D780051EAA4</string>
<string>8B0237581D42B1C400E1E8C8</string>
- <string>8B120FF4234A8EEE00C990C9</string>
+ <string>8B259536235D1D780051EAA4</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@@ -634,7 +675,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
- <real>592088814.93142998</real>
+ <real>593304952.09331</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@@ -651,11 +692,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>8B120FF5234A8EEE00C990C9</string>
<string>/Users/christopherjohnson/Desktop/Plugins/MacVST/Monitoring/Monitoring.xcodeproj</string>
+ <string>8B259537235D1D780051EAA4</string>
</array>
<key>WindowString</key>
- <string>246 279 810 487 0 0 1440 878 </string>
+ <string>476 276 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
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
--- a/plugins/WinVST/Monitoring/.vs/VSTProject/v14/.suo
+++ b/plugins/WinVST/Monitoring/.vs/VSTProject/v14/.suo
Binary files 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;
}