From 828681015d65db1c4f6c39c1ffb9fe89b71f8af2 Mon Sep 17 00:00:00 2001 From: Chris Johnson Date: Tue, 4 Feb 2020 03:55:47 -0500 Subject: Tape plugins update --- plugins/WinVST/Tape/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/Tape/TapeProc.cpp | 8 +++- plugins/WinVST/ToTape6/.vs/VSTProject/v14/.suo | Bin 22528 -> 22528 bytes plugins/WinVST/ToTape6/ToTape6Proc.cpp | 58 ++++++++++++++++--------- 4 files changed, 45 insertions(+), 21 deletions(-) (limited to 'plugins/WinVST') diff --git a/plugins/WinVST/Tape/.vs/VSTProject/v14/.suo b/plugins/WinVST/Tape/.vs/VSTProject/v14/.suo index ee3a0a2..98df0af 100755 Binary files a/plugins/WinVST/Tape/.vs/VSTProject/v14/.suo and b/plugins/WinVST/Tape/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/Tape/TapeProc.cpp b/plugins/WinVST/Tape/TapeProc.cpp index 1d1050c..e29f71a 100755 --- a/plugins/WinVST/Tape/TapeProc.cpp +++ b/plugins/WinVST/Tape/TapeProc.cpp @@ -326,6 +326,12 @@ void Tape::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa long double inputSampleR = *in2; if (fabs(inputSampleL)<1.18e-43) inputSampleL = fpd * 1.18e-43; if (fabs(inputSampleR)<1.18e-43) inputSampleR = fpd * 1.18e-43; + + if (inputgain < 1.0) { + inputSampleL *= inputgain; + inputSampleR *= inputgain; + } //gain cut before anything, even dry + long double drySampleL = inputSampleL; long double drySampleR = inputSampleR; @@ -438,7 +444,7 @@ void Tape::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sa long double groundSampleL = drySampleL - inputSampleL; //set up UnBox long double groundSampleR = drySampleR - inputSampleR; //set up UnBox - if (inputgain != 1.0) { + if (inputgain > 1.0) { inputSampleL *= inputgain; inputSampleR *= inputgain; } //gain boost inside UnBox: do not boost fringe audio diff --git a/plugins/WinVST/ToTape6/.vs/VSTProject/v14/.suo b/plugins/WinVST/ToTape6/.vs/VSTProject/v14/.suo index bb04217..5e0c932 100755 Binary files a/plugins/WinVST/ToTape6/.vs/VSTProject/v14/.suo and b/plugins/WinVST/ToTape6/.vs/VSTProject/v14/.suo differ diff --git a/plugins/WinVST/ToTape6/ToTape6Proc.cpp b/plugins/WinVST/ToTape6/ToTape6Proc.cpp index 6140295..1b4ff7d 100755 --- a/plugins/WinVST/ToTape6/ToTape6Proc.cpp +++ b/plugins/WinVST/ToTape6/ToTape6Proc.cpp @@ -61,6 +61,11 @@ void ToTape6::processReplacing(float **inputs, float **outputs, VstInt32 sampleF long double drySampleL = inputSampleL; long double drySampleR = inputSampleR; + if (inputgain < 1.0) { + inputSampleL *= inputgain; + inputSampleR *= inputgain; + } //gain cut before plugin + double flutterrandy = fpd / (double)UINT32_MAX; //now we've got a random flutter, so we're messing with the pitch before tape effects go on if (gcount < 0 || gcount > 499) {gcount = 499;} @@ -199,7 +204,7 @@ void ToTape6::processReplacing(float **inputs, float **outputs, VstInt32 sampleF long double groundSampleL = vibDrySampleL - inputSampleL; //set up UnBox on fluttered audio long double groundSampleR = vibDrySampleR - inputSampleR; //set up UnBox on fluttered audio - if (inputgain != 1.0) { + if (inputgain > 1.0) { inputSampleL *= inputgain; inputSampleR *= inputgain; } @@ -217,16 +222,20 @@ void ToTape6::processReplacing(float **inputs, float **outputs, VstInt32 sampleF if (HighsSampleR < 0) inputSampleR += applySoften; //apply Soften depending on polarity - if (fabs(inputSampleL) < 0.0025) { - iirHeadBumpAL *= 0.99; - iirHeadBumpBL *= 0.99; - } //restrain resonant quality of head bump algorithm + double suppress = (1.0-fabs(inputSampleL)) * 0.00013; + if (iirHeadBumpAL > suppress) iirHeadBumpAL -= suppress; + if (iirHeadBumpAL < -suppress) iirHeadBumpAL += suppress; + if (iirHeadBumpBL > suppress) iirHeadBumpBL -= suppress; + if (iirHeadBumpBL < -suppress) iirHeadBumpBL += suppress; + //restrain resonant quality of head bump algorithm + suppress = (1.0-fabs(inputSampleR)) * 0.00013; + if (iirHeadBumpAR > suppress) iirHeadBumpAR -= suppress; + if (iirHeadBumpAR < -suppress) iirHeadBumpAR += suppress; + if (iirHeadBumpBR > suppress) iirHeadBumpBR -= suppress; + if (iirHeadBumpBR < -suppress) iirHeadBumpBR += suppress; + //restrain resonant quality of head bump algorithm + inputSampleL += ((iirHeadBumpAL + iirHeadBumpBL) * HeadBumpControl); - //apply Fatten. - if (fabs(inputSampleR) < 0.0025) { - iirHeadBumpAR *= 0.99; - iirHeadBumpBR *= 0.99; - } //restrain resonant quality of head bump algorithm inputSampleR += ((iirHeadBumpAR + iirHeadBumpBR) * HeadBumpControl); //apply Fatten. @@ -386,6 +395,11 @@ void ToTape6::processDoubleReplacing(double **inputs, double **outputs, VstInt32 long double drySampleL = inputSampleL; long double drySampleR = inputSampleR; + if (inputgain < 1.0) { + inputSampleL *= inputgain; + inputSampleR *= inputgain; + } //gain cut before plugin + double flutterrandy = fpd / (double)UINT32_MAX; //now we've got a random flutter, so we're messing with the pitch before tape effects go on if (gcount < 0 || gcount > 499) {gcount = 499;} @@ -524,7 +538,7 @@ void ToTape6::processDoubleReplacing(double **inputs, double **outputs, VstInt32 long double groundSampleL = vibDrySampleL - inputSampleL; //set up UnBox on fluttered audio long double groundSampleR = vibDrySampleR - inputSampleR; //set up UnBox on fluttered audio - if (inputgain != 1.0) { + if (inputgain > 1.0) { inputSampleL *= inputgain; inputSampleR *= inputgain; } @@ -542,16 +556,20 @@ void ToTape6::processDoubleReplacing(double **inputs, double **outputs, VstInt32 if (HighsSampleR < 0) inputSampleR += applySoften; //apply Soften depending on polarity - if (fabs(inputSampleL) < 0.0025) { - iirHeadBumpAL *= 0.99; - iirHeadBumpBL *= 0.99; - } //restrain resonant quality of head bump algorithm + double suppress = (1.0-fabs(inputSampleL)) * 0.00013; + if (iirHeadBumpAL > suppress) iirHeadBumpAL -= suppress; + if (iirHeadBumpAL < -suppress) iirHeadBumpAL += suppress; + if (iirHeadBumpBL > suppress) iirHeadBumpBL -= suppress; + if (iirHeadBumpBL < -suppress) iirHeadBumpBL += suppress; + //restrain resonant quality of head bump algorithm + suppress = (1.0-fabs(inputSampleR)) * 0.00013; + if (iirHeadBumpAR > suppress) iirHeadBumpAR -= suppress; + if (iirHeadBumpAR < -suppress) iirHeadBumpAR += suppress; + if (iirHeadBumpBR > suppress) iirHeadBumpBR -= suppress; + if (iirHeadBumpBR < -suppress) iirHeadBumpBR += suppress; + //restrain resonant quality of head bump algorithm + inputSampleL += ((iirHeadBumpAL + iirHeadBumpBL) * HeadBumpControl); - //apply Fatten. - if (fabs(inputSampleR) < 0.0025) { - iirHeadBumpAR *= 0.99; - iirHeadBumpBR *= 0.99; - } //restrain resonant quality of head bump algorithm inputSampleR += ((iirHeadBumpAR + iirHeadBumpBR) * HeadBumpControl); //apply Fatten. -- cgit v1.2.3